@morphlesと同じように、この機能はphp 5.4の特徴(他の言語のmixinのようなもの)として利用できます。それが本当に必要なの場合は、あなたは、このような回避策を使用することができます:他の人が言ってきたように、クラスは一度に2つのクラスから継承することはできませんが
// your class #1
class A {
function smthA() { echo 'A'; }
}
// your class #2
class B {
function smthB() { echo 'B'; }
}
// composer class
class ComposeAB {
// list of implemented classes
private $classes = array('A', 'B');
// storage for objects of classes
private $objects = array();
// creating all objects
function __construct() {
foreach($this->classes as $className)
$this->objects[] = new $className;
}
// looking for class method in all the objects
function __call($method, $args) {
foreach($this->objects as $object) {
$callback = array($object, $method);
if(is_callable($callback))
return call_user_func_array($callback, $args);
}
}
}
$ab = new ComposeAB;
$ab->smthA();
$ab->smthB();
を(すなわち 'A、B'か何かを拡張する) – alxbl
何が私はやっていると思っていたが、それは主な親からのものを継承するとは思わなかった。この場合、どのクラスが親ですか?非親から関数/メソッドにどのようにアクセスしますか? – Brett
'Your_Class'からいつものように' $ this-> method() 'を使ってそれらを呼び出すことができます。' protected'と 'public'メンバはすべて継承されます。 'Child'は' Your_Class'の親ですが、多型によって 'Parent'のタイプヒントは' Your_Class'オブジェクトも受け入れます。 *コード例に少し詳しく説明して、* – alxbl