• Как разобраться с синтаксисом PHP?

    @sibir007 Автор вопроса
    Всем большое спасибо, кажется направление понял.
  • Как разобраться с синтаксисом PHP?

    @sibir007 Автор вопроса
    Евгений спасибо за ответ. Я вижу вы хорошо разбираетесь в laravel. На столе неделю лежат распечатки \Illuminate\Foundation\Application, \Illuminate\Container\Container, пытаюсь разобраться, помогите . Laravel при инициализации и приложения и в дальнейшем при его работе ведёт запись основных данных в три массива: $instance, $bindings, $aliases, $abstrctAliases структура которых [ ключ => значение ], я интуитивно понимаю что $this['events'] это обращение к ключу 'events' какого-то из этих массивов, но во первых мне не понятен сам синтаксис обращения, в документации по php я такого синтаксиса не нашёл, по моему должно быть что-то вроде $this->abstrctAliases['events']; и во вторых как php понимает в каком массиве смотреть данный ключ. _get и _set использует внутри себя такой же синтаксис, поэтому тоже мне не понятны.
    Спасибо
  • Как разобраться с синтаксисом PHP?

    @sibir007 Автор вопроса
    Вячеслав, я понимаю что данный синтаксис ($this['events']) говорит о том, что идёт обращение к элементу массива по ключу. Однако речь о том что $this это зарегистрированное слово и не может быть использовано для наименования массива, в нём сохраняется ссылка на инстанс класса. Для большего понимания: в том контексте где я нахожусь нет ни каких массивов $this, есть вызов функции из некоего объекта, и внутри данной функции используется конструкция $this['events'], т.е согласно документации в $this находится ссылка на объект из которого вызвана функция. Конкретный пример. Допустим есть класс Aplication, в котором есть метод bootstrapWith, на основе данного класса создаётся объект ссылка на который сохраняется скажем в переменной $app, далее идёт вызов функции $app->bootstrapWith($arr), по умолчанию в функцию кроме свойства $arr, передаётся и ссылка на объект из которого данная функция была вызвана и доступна данная ссылка в переменной $this. Ниже приведён реальный код. С $this->hasBeenBootstrapped = true; всё понятно - обращение к проперти $hasBeenBootstrapped объекта $app, а вот как трактовать $this['events'] я не понимаю, нет таких свойств и методов в классе Aplication, да и сама такая форма обращения к ним в документации не прописана
    public function bootstrapWith(array $bootstrappers)
        {
            $this->hasBeenBootstrapped = true;
    
            foreach ($bootstrappers as $bootstrapper) {
                $this['events']->dispatch('bootstrapping: '.$bootstrapper, [$this])s['events']''];
    
                $this->make($bootstrapper)->bootstrap($this);
    
                $this['events']->dispatch('bootstrapped: '.$bootstrapper, [$this]);
            }
        }