Ben işe aşağıdaki almak için çalışıyorum, ama ben bir kayıp değilim ...
class Foo {
public $somethingelse;
function __construct() {
echo 'I am Foo';
}
function composition() {
$this->somethingelse =& new SomethingElse();
}
}
class Bar extends Foo {
function __construct() {
echo 'I am Bar, my parent is Foo';
}
}
class SomethingElse {
function __construct() {
echo 'I am some other class';
}
function test() {
echo 'I am a method in the SomethingElse class';
}
}
Ne yapmak istiyorum sınıfı Foo içindeki somethingelse sınıfının bir örneğini oluşturmak olduğunu. Bu =&
kullanarak çalışır. Ben sınıf ile Bar sınıf Foo uzatmak Ama, ben çocuk ebeveyn sınıftan tüm verilerin özelliklerini ve yöntemleri miras düşündüm. Ancak, $this->somethingelse
çocuk sınıf Bar'da çalışmıyor gibi görünüyor:
$foo = new Foo(); // I am Foo
$foo->composition(); // I am some other class
$foo->somethingelse->test(); // I am a method in the SomethingElse class
$bar = new Bar(); // I am Bar, my parent is Foo
$bar->somethingelse->test(); // Fatal error: Call to a member function test() on a non-object
Bu nedenle, bu tür bir şekilde miras mümkün değildir? Ve ben orada kullanmak istiyorsanız ben sınıf Bar içinde sınıf somethingelse yeni bir örneğini oluşturmak gerekir? Ya ben bir şey eksik?
Yardımlarınız için şimdiden teşekkür ederiz.