note 101077 modified in language.oop5.late-static-bindings by danbrown

From: Date: Wed, 24 Nov 2010 17:33:44 +0000
Subject: note 101077 modified in language.oop5.late-static-bindings by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-174333@lists.php.net to get a copy of this message
THIS WORKED GREAT FOR ME: <?php abstract class ParentClass { static function parent_method() { $child_class_str = self::get_child_class(); eval("\$r = ".$child_class_str."::abstract_static();"); return $r; }// CHILD MUST OVERRIDE TO PUT ITSELF INTO TRACE protected abstract static function abstract_static(); private static function get_child_class() { $backtrace = debug_backtrace(); $num = count($backtrace); for($i = 0; $i < $num; $i++) { if($backtrace[$i]["class"] !== __CLASS__) return $backtrace[$i]["class"]; } return null; } } class ChildClass extends ParentClass { static function parent_method(){ return parent::parent_method(); } protected static function abstract_static() { return __METHOD__."()"; }// From ParentClass } print "The call was: ". ChildClass::parent_method(); ?> --was-- // THIS WORKED GREAT FOR ME: abstract class ParentClass { static function parent_method() { $child_class_str = self::get_child_class(); eval("\$r = ".$child_class_str."::abstract_static();"); return $r; }// CHILD MUST OVERRIDE TO PUT ITSELF INTO TRACE protected abstract static function abstract_static(); private static function get_child_class() { $backtrace = debug_backtrace(); $num = count($backtrace); for($i = 0; $i < $num; $i++) { if($backtrace[$i]["class"] !== __CLASS__) return $backtrace[$i]["class"]; } return null; } } class ChildClass extends ParentClass { static function parent_method(){ return parent::parent_method(); } protected static function abstract_static() { return __METHOD__."()"; }// From ParentClass } print "The call was: ". ChildClass::parent_method(); http://php.net/manual/en/language.oop5.late-static-bindings.php

« previous php.notes (#174333) next »