Was ich ein bischen unschön finde ist, das der Konstruktor das gesamte Post Array entgegennimmt / entgegennehmen kann.
PHP Quellcode
1
$user = new User($_POST);
Das ist natürlich sehr einfach und praktisch, aber wird später sehr unübersichtlich.
Man selber und vorallem auch andere wissen nicht, welche Felder es denn überhaupt gibt und was required ist oder was selber von dem Model intern ggf. übernommen wird.
Um das zu wissen müsste man immer in die Datenbank gucken, welche Felder es gibt und wie diese heissen und dann nochmal in die Klasse schauen falls es noch weitere interne Verarbeitungen gibt.
Ich finde die längere Variante, alles einzeln über den Konstruktor zu setzen und / oder für alle einen Getter & Setter zu implementieren, vorallem hinsichtlich der Lesbarkeit & Wiederverwendbarkeit , schöner.
Zum Beispiel Doctrine nutzt die magischen Getter & Setter, setzt aber als ausgleich alle Felder als Kommentar, so das die IDE´s das bei, Autocomplete trotzdem alles sauber anzeigen.