для тех, кто думает что это все шуточки) Синтаксис валидный, означает:
- $bitch - всем понятно, просто получить значение переменной $bitch;
- $$bitch - зачитать значение переменной $bitch и использовать его как имя другой переменной из этого же scope. Т.е. зачитываем значение переменной, имя которой хранится в переменной $bitch;
- $$$bitch - зачитать значение переменной $bitch и использовать его как имя переменной, в которой тоже хранится имя переменной o___O.
- $$$bitch() - зачитать значение $bitch и использовать его как имя переменной, в которой тоже хранится имя переменной, в которой хранится имя функции или lambda-функция ) Ну и выполнять эту функцию )
Пример https://3v4l.org/BX0ZT
Нам на курсе сказали, что бы мы когда на работу попадём - такое никогда не использовали))
Я использовал) когда нужно было доработать стороннюю либу, а там насоздавали переменных типа
$level1_value, $level2_value, ..., $level16_value и все на них завязано.
и потом с внешней системы запрашиваются данные - номер левела и значение.
И либо городить огород из 16 if-else типа
if($i == 1) $level1_value = ...
либо в пару строк написать
$level_var_name = “level” . $i . “_value”;
$$level_var_name = ...
Видел пару генерилок объектов с использованием такого синтаксиса.
Более устоявшаяся практика - используют значение переменной как ключ для массива которому уже что-то присваивают.
А я до сих пор жду того момента, когда мне понадобится оператор "Космический корабль"
Возможно такой момент уже был, но я им не воспользовался
Удобен для сортировок по нескольким параметрам.
$sort = $a['price'] <=> $b['price'];
if (!$sort) $sort = $a['order'] <=> $b['order'];
return $sort;
Действительно - удобно, но использовать, конечно, не буду:
return $a['price'] - $b['price'] ?: $a['order'] - $b['order'];
привет) ну ничего так идет, вот рисую мужиков полуголых :D Сейчас зойберга дорисую и залью обновление
Да, сложная фигня но иногда используется.
А вызывать приватные функции в пхп можно? Тоже через доллар?
Рефлексия делается иначе, для этого есть класс Reflection.
Получать значение переменной по её имени, хранящейсвя в другой переменной - это было ещё в самой первой версии php/fi (90е годы), когда ещё и классов не было в языке. Просто для удобства (так считал автор языка).
А вызывать приватные функции в пхп можно?
Можно изменять область видимости чего угодно через тот же Reflection. Делается такое, как правило, в тестах.






IT-юмор
7.6K постов53.3K подписчиков
Правила сообщества
Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору