On 6/23/08, Stanislav Malyshev <[EMAIL PROTECTED]> wrote: > Hi! > > > > why would anyone need that? > > > > To use function that does use static without dependence on in which context > if was called (or, explaining it other way, when your chain of inheritance > serves multiple purposes): > > class ActiveRecord { > static function getRow($condition) { > $table = new Table(get_called_class()); > return $table->find($condition); > } > } > > class Users extends ActiveRecord { > } > > class DepartmentUsers extends Users { > static function find($user) { > if(self::user_in_department($user)) { > return parent::getRow("user=$user"); > } > return false; > } > } > > $user = DepartmentUsers::find("bob"); > > Now in this case if your way is implemented, ActiveRecord would try to find > table for DepartmentUsers, which probably does not exist. You would have to > name Users by name there to do what this code wants to do, which leads us > back to "why we have parent:: at all" argument.
in my ActiveRecord, table for DepartmentUsers would actually exist ;) > > "parent" is related to inheritance and it is logical, that it retains > > call-chain. > > > > It is "logical" if you look at it with the narrow point of view of what you > need for your particular application. However, there are other use cases. > Automatic forwarding may become very awkward if you have multiple levels of > inheritance not all of them used for the same thing. I am just looking for consistency. I am expecting get_called_class() to work as a static analog of get_class(this) -- Alexey Zakhlestin http://blog.milkfarmsoft.com/ -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php