Класс вызывается из другого класса - PullRequest
1 голос
/ 13 января 2009

Предположим, у меня есть следующий код:

class siteMS
 {
    ...
    function __CONSTRUCT()
     {
        require 'config.php';
        $this->config = new siteMSConfig;
        ...
     }
    ...
 }

Могу ли я определить погоду из класса siteMSConfig внутри класса siteMS?

Ответы [ 3 ]

3 голосов
/ 13 января 2009

Да, но нет «красивого» способа сделать это - вы в конечном итоге будете просматривать обратную трассировку или что-то подобное.

Было бы лучше передать (необязательный?) Параметр конструктору siteMSConfig следующим образом:

class siteMSConfig
{
    public function __construct($inSiteMS = false)
    {
    }
}

или, альтернативно, подкласс siteMSConfig:

class siteMSsiteMSConfig extends siteMSConfig
{
    public function __construct()
    {
        // Possibly call parent::__construct();
    }
}
1 голос
/ 13 января 2009

Технически, да, вы можете использовать debug_backtrace , чтобы выяснить, кто был вашим абонентом.

Написание класса, который изменяет свое поведение, основываясь исключительно на том, откуда он вызвал, требует позже мира боли. Почему бы не параметризировать другое поведение или создать подкласс?

0 голосов
/ 13 января 2009

Полагаю, вам нужно передать его с переменной, откуда вы его назвали

$this->config = new siteMSConfig ('siteMS');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...