Поясните доступно механизм работы php скрипта?

Есть такой код:
<?php
class Base
{
	public $user;
	public $group;
	public $meta;

	private static $display;
	
	public function __construct()
	{
		if(self::$display)
		{
			$this->meta		=& self::$display->meta;
			$this->user		=& self::$display->user;
			$this->group	        =& self::$display->group;
		}
		else
		{
			self::$display = $this;
		}
	}

	function something
	{
		return null;
	}
}

class Doing extends Base
{
	function something
	{
		$this->user->id = 1;
		$this->user->name = "nic";
		/*------------other objects--------------*/
		return $this->user;
	}
}

Хотелось бы узнать все тонкости его работы.

Я понимаю его работу так:
В средине класса Doing который является наследником базового класса, возможно создавать объекты (только user, group и meta) и давать им различные свойства (любые), присваивая этим свойствам значения.

Если рассматривать класс Base, то здесь в конструкторе присутствует условие:
- если существует значение статического свойства display то публичным свойствам по ссылке передаются значения display;
- иначе свойству дисплей присасываются все объекты которые есть ($this);

Не совсем понятно:
1. Почему для передачи по ссылке используется символ =&, ведь в php 5 для этих целей достаточно просто знака =, однако если убрать знак амперсанда скрипт перестает работать - создавать объекты.
2. Зачем используется статическое свойство?
3. Как можно передать в условие else { ....... } данные из вне, например из любого метода классов наследников базового класса?
  • Вопрос задан
  • 237 просмотров
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
1. Нет, не достаточно.
Автоматическое присваивание по ссылке срабатывает при наличии new а в вашем примере не так.
$var = new MyClass();

2. Штатный телепат в отпуске.
Откуда вы взяли этот код, что он должен делать?

3. Параметром конструктора, например. Конечно конструктор придется переписать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы