ugrás a tartalomhoz

MVC model validáció

Cooper · 2014. Már. 4. (K), 11.58
Sziasztok!

Egy olyan problémára keresem a választ, hogy adott egy Model osztályom, aminek vannak függőségei (adatbázis kapcsolat), amiket injektálással juttatok be a konstruktorában.
Viszont vannak adatok amik form-ból érkeznek és dolgozni szeretnék velük, a model-ben lefektetett szabályok szerint validálni szeretném a controllerben.

Legkézenfekvőbb az lenne, ha a konstruktorban adnám át ezeket (3-4 paraméter), de ott már függőségeket is injektálok. Megférnek ezek ott egymás mellett?
Próbálok a tiszta kód szabályai szerint építkezni, az meg említ olyat, hogy paraméter 2, max 3 legyen.

Most valahogy így néz ki leegyszerűsítve a Model osztályom.

class Foo
{
	private $db;
	
	public function __construct(\Database $db)
	{
		$this->db = $db;
	}
	
    /**
	 * @throws \Exception
	 */
	public function validate($id, $name, $bar) {}
	
	public function process($id, $name, $bar)
	{
		$this->validate($id, $name, $bar);
		
		// további feldolgozás
	}
}

$foo = new Foo($db);
$foo->process($id, $name, $bar);
Gondolkoztam azon is, hogy a konstruktorban adom át az alap paramétereket, a process metódusomban pedig az adatbázis kapcsolatot, mert csak úgyis ott kezdem el használni. De példákat DI-re csak konstruktorban, vagy setterben átadásról láttam.

Vagy settereket használok a paraméterek átadására és ott helyben ellenőrzöm. Majd a process metódusban vizsgálom, hogy az összes érték átadásra került.

Tudom sokféleképpen meg lehet oldani, csak arra a kérdésre keresem a választ, hogy melyik lehet a legjobb megoldás.
 
1

szerintem kellene az

szabo.b.gabor · 2014. Már. 4. (K), 12.25
szerintem kellene az osztályodban pár property amiben az adott mezők értékeit tárolod

protected $id;
protected $name;
protected $bar;


a validate függvénynek max egy array paramétert adnék, ami azt mondja meg hogy melyik mezőket kell validálni, alapértelmezetten üres, és olyankor az összeset validálja. vagy értelmezeted bemeneti szűrőként.

a settert pedig különválasztanám.

nem megyek jobban bele, de valahogy így indulnék
2

Ez így nem rossz, csak bár

Cooper · 2014. Már. 4. (K), 12.45
Ez így nem rossz, csak bár nem írtam, de a setteres megoldást a legvégére hagynám.