PHP - инициализировать экземпляр объекта в конструкторе класса, доступ внутри статического члена

Я использую инфраструктуру для маршрутизации своих маршрутов к контроллерам и их соответствующим методам, однако я не уверен, как инициализировать классы в конструкторе, а затем получить к нему доступ через статический член того же класса.

class Controller {

    static private $test = null;

    private function __construct(){

        #$this->test = new Test();
        self::$test = new Test();

    }

    public static function Index(){

        // rather than this
        #$test = new Test();
        #echo $test->greet();

        // something like this
        #echo self::$test->greet();

    }

}

1 ответ

Решение

Вы должны инициализировать контроллер в первую очередь. Ты можешь позвонить new Controller(); для этого, который затем ставит экземпляр Test в private $test

<?php
Class Test {

    public function greet(){
        return "hello world";   
    }

}

class Controller {

    static private $test = null;

    private function __construct(){

        self::$test = new Test();

    }

    public static function Index(){

        new Controller();
        echo self::$test->greet();

    }

}

Controller::Index(); //Returns hello world
Другие вопросы по тегам