|
|
|
|
class A extends B, C {
}//class A
|
| |
|
|
|
|
|
|
|
для: alex1
(07.10.2010 в 12:39)
| | PHP не поддерживает множественное наследование. | |
|
|
|
|
|
|
|
для: Alph[p]a
(07.10.2010 в 13:00)
| | Я думал в таком случае ответить: "Ахринеть". А теперь и не знаю, что ответить. Наверное: "Спасибо". | |
|
|
|
|
|
|
|
для: alex1
(07.10.2010 в 13:20)
| | используйте интерфейсы..там есть как вариант | |
|
|
|
|
|
|
|
для: alex1
(07.10.2010 в 13:20)
| | Можно обойти путем перегрузки методов - вызовом __call
<?php
abstract class ABC{
private $link = array(); //массив будет содержать список экземпляров классов
protected function _addMethod(ABC $l){
//получили имя класса, запихнули класс в массив
$this->link[get_class($l)] = $l;
}
//перехватываем методы, которые вызывает класс С
public function __call($mtd, array $arg = array()){
foreach($this->link as $l){
$l->getMethod($mtd, $arg);
}
}
public function getMethod($method, $arguments){
return call_user_func_array(array($this, $method), $arguments);
}
}
//классы, методы которых наследуются классом С
class A extends ABC{
public function writeA(){
print "Метод класса А<br />";
}
}
class B extends ABC{
public function writeB(){
print "Метод класса B";
}
}
//класс-наследник
class C extends ABC{
//в конструктор запихиваем привязку к классам, которые будут наследоваться
public function __construct() {
$this->_addMethod(new A);
$this->_addMethod(new B);
}
}
$c = new C;
$c->writeA();
$c->writeB();
?>
|
| |
|
|
|