Поясните доступно механизм работы 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. Параметром конструктора, например. Конечно конструктор придется переписать.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
03 мая 2024, в 00:45
1000 руб./за проект
02 мая 2024, в 23:56
2000 руб./за проект
02 мая 2024, в 23:29
1500 руб./в час