PHP expert |
|
Is het in JAVA niet "super"?
Die meerdere constructors is zoals ook meerdere methodes via "overloading". Iets wat in PHP niet nodig is omdat daar "optionele" variabelen zijn. Maarja, het is wel handig als ik bv. constructor logic wil afhandelen in mijn Model klasse, maar dat er wel een tussenklasse is waarin al mijn static functions gegroepeerd staan:
public Model(DataRow row, bool wait)
{
_row = row;
_id = Convert.ToInt32(_row["id"]);
if (!_initConstructor() && !wait)
FillVars();
}
public Model(DataRow row, bool wait) { _row = row; _id = Convert.ToInt32(_row["id"]); if (!_initConstructor() && !wait) FillVars(); }
Dit geld voor elk model, bovenstaande constructor.
Mochten ze rechstreeks erven dan kon ik dit doen:
public Forum_Topic(DataRow row, bool wait) : base(row, wait){}
public Forum_Topic(DataRow row, bool wait) : base(row, wait){}
edit: zelfs dat base gedoe zou niet eens nodig zijn, dat zou hij al automatisch doen. Maarja, tis de grandparent hier, en niet de parent...
Nu moet ik het zo doen:
protected void _handleConstructor(DataRow row, bool wait)
{
_row = row;
_id = Convert.ToInt32(_row["id"]);
if (!_initConstructor() && !wait)
FillVars();
}
protected void _handleConstructor(DataRow row, bool wait) { _row = row; _id = Convert.ToInt32(_row["id"]); if (!_initConstructor() && !wait) FillVars(); }
public Forum_Topic(row) : this(row, false){}
public Forum_Topic(DataRow row, bool wait)
{
_handleConstructor(row, wait);
}
public Forum_Topic(row) : this(row, false){} public Forum_Topic(DataRow row, bool wait) { _handleConstructor(row, wait); }
etc...
Het gaat ook wel, maarja, het is niet "logisch". Snap je?
edit: blijkbaar roept hij standaard de "hoofdconstructor" van de parents op (hoe diep dan ook) maar niet aangepast naar het aantal argumenten. |