У меня есть класс языка с членами общественными данных:PHP: Как получить доступ к объекту внутри класса
class language {
public $error = "There was an error";
}
Тогда у меня есть много различных классов, которые используют этот класс. Как я могу получить доступ к этому классу из других классов? Конечно, вы можете создать экземпляр объекта внутри всех классов, которые его используют, но я полагаю, что это резко снизит производительность, если я буду делать это с несколькими классами.
Мне нужен только один объект, так как я его не меняю. Итак, я сделал
$language = new language();
class name {
private $language;
public function __construct() {
global $language;
$this->language = $language;
}
public function method() {
mysql_query(...) or die($this->language->error);
}
}
Это хороший способ сделать это? Теперь мне нужно создать экземпляр в каждом сценарии «мать». И я полагаю, выполняя __construct(), я передаю только подтверждение, так как я не использую слово clone?
Ага, это обычное известное правило или «шаблон»? $ lang = Язык :: getInstance(); передает ссылку, а не сам объект? –
Это [анти-шаблон] (http://en.wikipedia.org/wiki/Anti-pattern) –
Да, это общий шаблон дизайна: http://en.wikipedia.org/wiki/Singleton_pattern Здесь объект не копируется, потому что, как указано на этой странице: http://php.net/manual/en/language.oop5.references.php 'Когда объект отправляется по аргументу, возвращенному или присвоенному другой переменной, различные переменные а не псевдонимы: они содержат копию идентификатора, которая указывает на тот же объект ». – SirDarius