Re: late static binding

From: Date: Thu, 31 May 2007 20:37:46 +0000
Subject: Re: late static binding
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to internals+get-30008@lists.php.net to get a copy of this message
On Wed, May 30, 2007 9:54 am, Jochem Maas wrote: > Richard Lynch wrote: >> Maybe I'm just confused (well, I'm always confused...) but if a >> Class >> has multiple children, how the heck would PHP know which child:: to >> call?... > > the use of the name 'child' is very confusing, I would prefer 'super' > or 'static' ... > regardless the concept is actually quite simple: > > interface DOInfo { > static function getTableName(); > } > > abstract class DataObject implements DOInfo { > static function findRange() { > $table = super::getTableName(); > return $foo; // $foo is a collection of whatever (e.g. Product > objects) > } > > static function getTableName() { > throw new Exception('be a dear and implement '.__METHOD__.' in your > subclass'); } > > } > > class Product extends DataObject { > static function getTableName() { return 'PRODS'; } > } > > $products = Product::findRange(); > > excuse me if I've just committed a grave sin against the OO Codex in > writing something > that either isn't 'correct' or is syntactically incorrect according to > the current > state of php - hopefully the idea is clear anyway. You may think this is "quite simple" but I've skimmed it several times and have no idea what the heck is going on... I do know that 'super', to me, implies superclass which PHP just calls parent:: so I don't like that either. If it's just calling the static method of the interface parent-y thingie, I dunno, maybe just static:: would work? -- Some people have a "gift" link here. Know what I want? I want you to buy a CD from some indie artist. http://cdbaby.com/browse/from/lynch Yeah, I get a buck. So?

« previous php.internals (#30008) next »