$this->name
— свойство, но что дальше? Т.е. как понимать такие длинные конструкции? Видел в коде фреймворков и в чужом коде, но никто в попадавшихся мне видеоуроках ни разу не показал такую длинную конструкцию и что именно в ней происходит.
Ещё пример: $this->data->name = $name;
Что значит: ->data->name
Это композиция, или ассоциация. Случай когда полем класса является другой клас, имеющий свои собственные поля и методы.
Например:
class foo
{
public $nameFoo;
public someMethod()
{
return "какое то значение";
}
}
class bar
{
public $nameBar;
__construct()
{
$this->nameBar = new foo();
}
}
Тогда обращение к полю nameFoo
поля nameBar
(являющегося объектом класса foo
) будет выглядеть так:
$item = new bar();
//обращаемся к полю (nameFoo будет присвоена строка "присваиваемое значение")
$item->nameBar->nameFoo = "присваиваемое значение";
//обращаемся к методу (будет возвращена строка "какое то значение")
$item->nameBar->someMethod()
И таких вложенностей может быть много.
В видеороках такого не рассказывают. Потому что авторы видеоуроков сами ничего не знают, а лишь как обезьяны повторяют выученные у другого такого же балбеса пару команд.
Объяснение при этом очень простое: в РНР ты всегда можешь обратиться к результату, возвращаемому переменной. Например, запись вида
$name = $array[1]["name"];
означает, что сначала мы обратились к переменной $array[1]
, но она тоже представляет собой массив, и мы можем сразу обратиться к его элементу ["name"]
То же самое и с объектами. Если выражение возвращает объект, то мы можем пририсовать стрелочку и обратиться к его свойству или методу. И так до бесконечности. По-английски это называется method chaining, то есть нанизывание одного метода на другой. Например в PDO можно написать так:
$id = $pdo->query("INSERT INTO t VALUES(NULL)")->insertId();
Соответственно, написать $this->data->name
можно только если data
- это объект.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть БД с некоторым количеством новостейМне нужно вывести списком, например, последние 5
Настроен apache 2 сервер на линуксе и установлен laravel 52, есть php скрипт который слушает сокет, можно ли из этого скрипта вызвать Event::fire для laravel?
помогите написать вот такой пример, пользователю дается 2 дня на выполнение работы, они должен видеть когда время закончилось
У меня есть корневая папкаВ ней лежит папка "blocks" в которой находится head