Heim > Artikel > Backend-Entwicklung > So verwenden Sie Nicht-Trait-Methoden, um Mehrfachvererbung in Versionen vor PHP5.4 zu implementieren
Sprachen wie PHP und Java unterstützen nur die Einzelvererbung, aber manchmal muss ich die Mehrfachvererbung verwenden. Natürlich können Merkmale nach PHP5.4 auch die Mehrfachvererbung besser lösen.
Im Folgenden stellen wir vor, wie man Nicht-Trait-Methoden verwendet, um mehrere Vererbungsfunktionen zu implementieren.
Dieser Code wurde von mir getestet und steht als Referenz zur Verfügung wie folgt:
<?php /* 多继承基类 注:要想实现类多继承,必需首先继承此基类 */ class multi_extends{ public function __construct(){ $this->_init_extends(); } protected function _init_extends(){ if(property_exists($this,'_extends')) { $extends=&$this->_extends; foreach($extends as $class) { $this->_extends($class); } } } public function _extends($class_name){ //分析目标 $ref = new ReflectionClass($class_name); //继承公共属性 $property_list=$ref->getProperties(ReflectionProperty::IS_PUBLIC); foreach($property_list as $property) { $property_name=$property->name; $property_value=$property->getValue(new $class_name); if($property_name==='_extends') { foreach($property_value as $c) { $this->_extends[]=$c; } }else{ if(!property_exists($this,$property_name)) { $this->{$property->name}=$property_value; } } } //继承公共方法 $method_list=$ref->getMethods(ReflectionMethod::IS_PUBLIC); foreach($method_list as $method) { $this->_extends_method[$method->name]=$method->class; } } function __call($m,$a){ if($c=$this->_extends_method[$m]) { eval("$c::$m(".'$a'.");"); } } } header('content-type:text/html;charset=utf-8'); class a{ public $a=5; public function say_name(){ echo '我叫'.$this->name.'<br>'; } } class b{ function say_age(){ echo '我今年'.$this->age.'岁<br>'; } } class c extends multi_extends{ public $_extends=array('a','b'); public function say_hellow(){ echo 'hellow '.$this->name.'<br>'; } } class d{ function say_goodbye(){ echo 'goodbye '.$this->name.'<br>'; } } class persion extends multi_extends{ public $_extends=array('c','d'); public $name="熊宝山"; public $age="20"; } //执行继承后的方法 $o=new persion(); $o->say_name(); $o->say_age(); $o->say_hellow(); $o->say_goodbye();
Artikeladresse: http://www.php.cn/php-weizijiaocheng-377482.html
Lernen Sie Programmieren auf der chinesischen PHP-Website
www.php.cnDas obige ist der detaillierte Inhalt vonSo verwenden Sie Nicht-Trait-Methoden, um Mehrfachvererbung in Versionen vor PHP5.4 zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!