Ok...
Ik heb wat in te halen...
Het leuke is dat Spinazie dit keer onderuit gehaald wordt...
$db moet private zijn omdat het geen parent heeft? huh?
Stel: je wilt Register extenden...
Je wilt een nieuwe method toevoegen en iets met de database doen...
Dan wil je dus iets met $this->db doen...
Maar dat kan niet als Register::$db private is, wel als het protected is...
Private is dus nog een extra 'bescherming', niet alleen tegen manipulatie van buiten de class, maar ook tegen manipulatie van child classes...
Verder snap ik de "hij heeft een parent, dus protected" niet...
Wat heeft de parent er aan?
Voor de parent bestaat die variabele dan helemaal niet, en als die em dan zou gebruiken zouden er fouten komen...
Ik gebruik protected alleen als ik wil dat children die waarde niet kunnen veranderen, of alleen via setters...
Hij moet singleton gebruken?
Elke keer?
$this->db is korter dan telkens Database::Connect()...
Database::Connect() lijkt me redelijk singleton, al kan de naam van de method iets beter...
CitaatHet is trouwens niet nodig in een niet-statische methode een statische variabele te gebruiken, tenzij je van plan bent hem ooit nog zonder instantie aan te roepen.
Je grootste onzin tot nu toe! En ik heb heel wat onzin van je gezien...
Een class is geen object...
Een class is een blauwdruk voor een object...
Je hebt pas een object wanneer je het keyword "new" hebt gebruikt:
$boe = new Boe;
Een class mag best zelf dingen controleren...
Een validatie class kan handig zijn, maar hoeft niet...
Verder zou ik zelf geen Register class maken (wat Spinazie ook duidelijk probeert te maken), ik zou het eerder een User::register() method maken...
De controles voor de waardes tijdens het registreren zijn tijdens het updaten (User::update()) van een user ook nodig...