Задать вопрос

Поясните доступно механизм работы 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 { ....... } данные из вне, например из любого метода классов наследников базового класса?
  • Вопрос задан
  • 239 просмотров
Подписаться 3 Оценить 2 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
1. Нет, не достаточно.
Автоматическое присваивание по ссылке срабатывает при наличии new а в вашем примере не так.
$var = new MyClass();

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

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽