MVC model validáció
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.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.
■ 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);
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.
szerintem kellene az
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
Ez így nem rossz, csak bár