Ward, nogmaals... het gaat me niet om de technische invulling/implementatie, maar om de real-life gedachte erachter. Namelijk dat het vreemd is dat je iets kunt bouwen wat al gebouwd is. Daar verwonder ik me over.
De vliegtuigbouwer bouwt het vliegtuig: het vliegtuig kan zichzelf niet bouwen.
De naamgeving is niet ideaal, daar heb je wel een punt. Maar magische methoden zijn sowieso een vreemde eend in de bijt, want ze doen in x iets wanneer in y, buiten x, iets plaatsvindt. En dat doen ze nog automatisch ook, iets dat evenmin vanzelfsprekend is wanneer je programmeert.
In andere talen als C++ en Java kun je ook meerdere constructors declareren:
public class Book
{
private String title;
private String isbn;
public Book()
{
//nothing specified!
}
public Book(String title)
{
//only title!
}
...
}
Dat vind ik niet hetzelfde. Als je een huis hebt gebouwd, dan kun je van dat huis een deur (property) vervangen. Alleen je kunt niet opnieuw iets bouwen terwijl datgene al gebouwd is.
Heel Rome is gebouwd op de oude stad. En nogmaals, je moet niet alles van de programmeerwereld vergelijken met de echte wereld...
Als we trouwens toch over andere talen spreken, JavaScript doet dit het mooiste met zijn prototyped stijl. Hierbij zit de constructor niet in het object, maar maakt de constructor het objecten. In alle andere talen wordt de constructor eigenlijk pas aangeroepen wanneer er een object is.
Het gaat mij enkel om het feit dat je een constructor meerdere keren kunt aanroepen. Dat vind ik wat vreemd. Een deur die open staat, kun je niet nog een keer open zetten. Zelfde idee zeg maar. Anyhow... ik vond het leuk om met jullie te delen :)
Hadden ze __construct() dan niet beter ___onConstruct() kunnen noemen, want wat er in de methode staat geeft toch aan wat er op het moment van aanmaken moet worden uitgevoerd? Of zie ik dit verkeerd?