Прежде чем я погрузлюсь в часть, посвященную обсуждению, я задам быстрый вопрос; Есть ли способ определить, является ли переменная ссылкой на другую переменную / объект? (Просто хочу проверить, правильно ли я передаю ссылки и не делаю дубликаты версий моих объектов). Например
$foo = 'Hello World';
$bar = &$foo;
echo (is_reference($bar) ? 'Is reference' : 'Is orginal';
Я использую PHP5 уже несколько лет (только для личного использования), и я бы сказал, что я умеренно обращен к теме объектно-ориентированной реализации. Однако концепция Model View Controller Framework является для меня довольно новой.
Я просмотрел несколько учебных пособий и рассмотрел некоторые из структур с открытым исходным кодом (в основном CodeIgnitor), чтобы лучше понять, как все сочетается. Я начинаю ценить реальные преимущества использования этого типа структуры.
Я привык реализовывать ссылки на объекты в следующей технике.
class Foo{
public $var = 'Hello World!';
}
class Bar{
public function __construct(){
global $Foo;
echo $Foo->var;
}
}
$Foo = new Foo;
$Bar = new Bar;
Я был удивлен, увидев, что CodeIgnitor и Yii передают ссылки на объекты и могут быть доступны с помощью следующего метода:
$this->load->view('argument')
Непосредственное преимущество, которое я вижу, - гораздо меньше кода и удобство для пользователя. Но мне интересно, будет ли он более эффективным, так как эти структуры предположительно оптимизированы? Или просто сделать код более удобным для пользователя? Или какое-то другое преимущество? Это была интересная статья Не использовать ссылки PHP .
Причина, по которой я спрашиваю, состоит в том, что я пытаюсь собрать основу для личного проекта и для кривой обучения.
UPDATE
$Baz = $Foo;
$Baz->var = 'Goodbye World!';
echo $Foo->var;
/* Ouput */
Goodbye World!
Мне немного стыдно сказать, что я не ожидал, что это даст такой результат. Конечно, теперь все намного проще.