Rozszerzenie klasy o pole przez użycie metody z innej klasy

0

Cześć.
Jak mogę rozszerzyć klasę o nowe pole odwołując się do metody z innej klasy? Oto sytuacja:

class child extends baseController{
    public function __construct(){
        parent::__construct() // daje mi instancje klas których mogę używać.
        $this->load->model('model_name');
        $this->model_name->modelFunction(); //to chciałbym osiągnąć
    }
}

Klasa load po niczym nie dziedziczy.
Bardzo zależy mi aby nie pisać:

$this->model_name = $this->load->model('model_name');

Na razie jestem na etapie w którym mogę odwołać się do modelu przez

$this->load->model_name->model_method();

jednakże takiego łańcuszka nie mogę zaakceptować.
Zależy mi aby nie używać żadnych magicznych funkcji, oraz nie przekazywać instancji klasy child do klasy load.

0

Masz klasę A która dziedziczy po B i chcesz w klasie A użyć metody jaka jest zawarta w klasie C? Pytam, bo i Twoje pytanie jakieś takie niezrozumiałe dla mnie.

0

No po mojemu są dwa podejścia (o ile dobrze zrozumiałem pytanie);

Nr 1;

class B extends A
{

    public function __construct()
    {
        parent::__construct();
        $someObject = new C();
        $someObject->someMethod();
    }

}

Nr 2;

class B extends A
{

    protected $someObject;

    public function __construct()
    {
        parent::__construct();
        $this->someObject = new C();
        var_dump($this->someMethod());
    }

    public function someMethod()
    {
        return $this->someObject;
    }

}
0

@axelbest W poprzednim poście źle cię zrozumiałem.
Mam Klasę A która dziedziczy po klasie B, która w konstruktorze tworzy klasę C. Chcę aby odwołując się w klasie A do klasy C(w której jest tworzona klasa D) w klasie A powstał obiekt D.

0

Poradziłem sobie z problemem.
Dla osób szukających rozwiązania:
Rodzic powinien mieć statyczne pole np. $instance
Następnie należy do niego za pomocą referencji przypisać $this
I stworzyć statyczną, publiczną metode &getInstance.
Dzięki temu w dowolnym miejscu możemy pobrać do niego referencję i dodać co potrzebujemy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1