php5.4之前版本如何使用非trait方法实现多继承功能
像PHP,Java这类语言都只支持单继承,但有时候我要需要用到多继承,我可可以模拟出多继承,当然php5.4以后的trait也能更好的解决多继承问题。
下面我们介绍如何使用非trait方法实现多继承功能,
本段代码经本人测试可用,代码可供参考
代码如下:
<?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();
以上就是本人实现的php多继承类的功能,代码仅供学习,正式项目中请使用php5.4的trait功能。
文章地址:http://www.php.cn/php-weizijiaocheng-377482.html
学编程就来PHP中文网 www.php.cn
~~~~
Atas ialah kandungan terperinci php5.4之前版本如何使用非trait方法实现多继承功能. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHPtraitDTO: Memudahkan pembangunan objek pemindahan data Pengenalan: Dalam pembangunan perisian moden, objek pemindahan data (DataTransferObject, dirujuk sebagai DTO) memainkan peranan penting. DTO ialah bekas data tulen yang digunakan untuk memindahkan data antara lapisan. Walau bagaimanapun, semasa proses pembangunan, pembangun perlu menulis sejumlah besar kod serupa untuk mentakrif dan mengendalikan DTO. Untuk memudahkan proses ini, ciri ciri telah diperkenalkan dalam PHP Kita boleh menggunakan ciri ciri untuk

Fungsi rakan membenarkan fungsi bukan ahli mengakses ahli persendirian dan memainkan peranan dalam berbilang warisan, membenarkan fungsi kelas terbitan mengakses ahli persendirian kelas asas.

Pemahaman mendalam tentang corak reka bentuk dan amalan PHPtraitDTO Pengenalan: Dalam pembangunan PHP, corak reka bentuk adalah bahagian penting. Antaranya, DTO (DataTransferObject) ialah corak reka bentuk yang biasa digunakan untuk merangkum objek pemindahan data. Dalam proses melaksanakan DTO, menggunakan ciri (ciri) boleh meningkatkan kebolehgunaan semula dan fleksibiliti kod dengan berkesan. Artikel ini akan menyelidiki corak reka bentuk dan amalan traitDTO dalam PHP

PHPtraitDTO: Alat utama untuk mengoptimumkan proses penghantaran data, contoh kod khusus diperlukan Pengenalan: Semasa proses pembangunan, penghantaran data adalah keperluan yang sangat biasa, terutamanya apabila data dipindahkan antara tahap yang berbeza. Dalam proses penghantaran data ini, kami selalunya perlu memproses, mengesahkan atau menukar data untuk memenuhi keperluan perniagaan yang berbeza. Untuk meningkatkan kebolehbacaan dan kebolehselenggaraan kod, kami boleh menggunakan PHPtraitDTO (DataTransferObject) untuk mengoptimumkan

PHPtraitDTO: Melaksanakan kesederhanaan dan fleksibiliti objek pemindahan data Pengenalan: Dalam proses pembangunan PHP, penghantaran dan pemprosesan data sering terlibat. DataTransferObject (pendek kata DTO) ialah corak reka bentuk yang digunakan untuk memindahkan data antara lapisan yang berbeza. Semasa proses penghantaran, DTO memudahkan operasi data dengan merangkum data dan menyediakan kaedah capaian awam. Artikel ini akan memperkenalkan cara menggunakan PHPtrait untuk melaksanakan DT

Melaksanakan rangka kerja pemindahan data yang boleh disesuaikan menggunakan PHPtraitDTO Apabila tapak web dan aplikasi menjadi lebih kompleks, pemindahan data menjadi semakin penting. Dalam PHP, menggunakan DataTransferObject (pendek kata DTO) untuk mengendalikan pemindahan data boleh memudahkan kod dan meningkatkan kebolehselenggaraan dan kebolehskalaan. Artikel ini akan memperkenalkan cara menggunakan PHPtrait dan DTO untuk melaksanakan rangka kerja pemindahan data yang boleh disesuaikan dan menyediakan contoh kod yang sepadan.

PHPtraitDTO: Gambaran Keseluruhan Corak Objek Pemindahan Data Elegan: Objek Pemindahan Data (pendek kata DTO) ialah corak reka bentuk yang digunakan untuk memindahkan data antara lapisan yang berbeza. Dalam aplikasi, selalunya perlu untuk mendapatkan data daripada pangkalan data atau perkhidmatan luaran dan menghantarnya antara lapisan aplikasi yang berbeza. Mod DTO boleh menjadikan penghantaran data lebih ringkas dan jelas, dan juga memudahkan pengembangan dan penyelenggaraan. Dalam PHP, kita boleh menggunakan ciri untuk melaksanakan DTO

PHPtraitDTO: Alat utama untuk mengoptimumkan proses penghantaran data Contoh kod khusus diperlukan Dalam proses pembangunan, penghantaran data adalah pautan yang sangat kritikal. Cara menghantar data dengan cekap telah menjadi salah satu masalah yang perlu diselesaikan oleh pembangun. Dalam bahasa PHP, menggunakan traitDTO (DataTransferObject) boleh mengoptimumkan proses penghantaran data dan meningkatkan kecekapan penghantaran data. Artikel ini akan memperkenalkan apa itu traitDTO dan cara menggunakannya untuk mengoptimumkan aliran pemindahan data
