Диёр
В пиайчпи есть анонимные обьекты?
они будут объектами класса stdClass
Диёр
А чего 512?) неужели есть такие вложенности?)
это на самом деле значение по-умолчанию
Диёр
по-умолчанию также вместо JSON_THROW_ON_ERROR стоит 0
Evgen
А json_throw_on_error хранит 1?
Диёр
кстати в пхп очень много коллизий в жсонах бывает из-за отсутствия в пхп отдельно векторов и диктов
И ТУТ ОЧЕНЬ ИНТЕРЕСНЫЙ МОМЕНТ! допустим, вы сделаете $arr = ['a', 'b', 'c'] по факту он будет [0 => 'a', 1 => 'b', 2 => 'c'] В КАКОЙ ЖСОН ЭТО ПРЕВРАТИТСЯ? массив или мапа?
Диёр
А json_throw_on_error хранит 1?
define('JSON_THROW_ON_ERROR', 4194304);
Evgen
Етитьки колотитька
Evgen
Видимо здесь есть тайный смысл
Vladislav
https://twitter.com/original_ejl/status/1214696666172780544?s=12
Диёр
$arr1 = ['a', 'b', 'c']; $arr2 = [ 0 => 'a', 1 => 'b', 2 => 'c' ]; их жсоны равны
Диёр
НО!
Ivan
define('JSON_THROW_ON_ERROR', 4194304);
все индексы ниже заняты Очень Важными Вещами
Evgen
$arr1 = ['a', 'b', 'c']; $arr2 = [ 0 => 'a', 1 => 'b', 2 => 'c' ]; их жсоны равны
Кста, интересная идея с подобным в питониге и жс поиграться
Диёр
НО!
стоит вместо json_encode($arr1) сделать json_encode($arr1, JSON_FORCE_OBJECT) и оба выдадут {"0":"a","1":"b","2":"c"}
Диёр
Это реально бывает полезно?
ну если у тебя случайно дикт, где все ключи это инты по порядку возрастания и ты хочешь чтобы у тебя фронт получил дикт, а не массив - да
Evgen
Дикт у которого ключи числа по порядку возрастания слишком сильно попахивает списком
Диёр
возможно
Диёр
НО ТЫ НЕ СМОЖЕШЬ ЭТОГО ПРОВЕРИТЬ
Shub
Дикт у которого ключи числа по порядку возрастания слишком сильно попахивает списком
в пхп есть по факту всего одна структура - словарь, он же ассоциативный массив. если об этом часто задумываться, то можно поехать кукушкой. слава аллаху, словари требуются чаще, чем массивы, поэтому оно даже вроде бы в жилу получается
Диёр
Дикт у которого ключи числа по порядку возрастания слишком сильно попахивает списком
ну вот выгрузился у тебя откуда-нибудь жсон юзеров, отсортированный по дате регистрации и в жсоне эти юзеры проиндексированы по их айдишникам
Диёр
и допустим делаешь ты что-нибудь с этими юзерами и дальше жсон передаешь
Диёр
это дикт? это массив? это супермен!
Evgen
Душевно
Диёр
а ещё в пхп при флажочках на "рестрикт всё" какая-то очень странная магия с попыткой получения элемента из дикта по несуществующему ключу
Диёр
например есть $kek = [];
Диёр
$kek[1] выкинет эксепшн
Диёр
а вот isset($kek[1]) нет (isset проверяет на null)
Sergey
Сегодня какое то душилово идёт историями про код
Диёр
а вот isset($kek[1]) нет (isset проверяет на null)
равно как не выкидывают ошибки ещё и $kek[1] ?? $default_value
Диёр
кстати я кажется не говорил, но у пэйпала пхп сдк это гнойная рана после крокодила
Диёр
пахнет также
Диёр
по сути просто жсоны по хттп отправляет, но код как из примеров дедушки, только с привкусом ооп и на пхп
Диёр
а ещё я не знаю как так получилось, но когда ты делаешь анонимную функцию, то её всегда лучше делать статичной и она от этого совсем чуток, но всё-таки получит профита по производительности
Диёр
и я чет не понимаю почему по-дефолту интерпретатор не считает любые анонимные функции статичными
Диёр
а ещё кое-что
Диёр
это совсем мелочь
Диёр
но просто "какого хуя"
Диёр
array_map принимает функцию и массив, а array_reduce принимает массив и функцию
Диёр
больше всего меня в пхп напугала эта вещь спокойной ночи function first($arg) { echo $arg; } function second($fn) { $fn("olololo"); } second("first"); ```
Sergey
Диёр
Ну спасибо, а нам то как уснуть
вот ты понимаешь что тут происходит?
Диёр
Боль происходит
а что запринтится?
Evgen
Дивный мир консистентности php
Диёр
Дивный мир консистентности php
вот что тут запринтится?
Evgen
Кажется что у пхп не интерпритатор а полукрмпилятор какойто
Evgen
Ололо?
Диёр
Ничего?
я раньше тоже так думал!
Диёр
я был уверен что всё наебнется
Диёр
но нет!
Evgen
Ну это все прикольно, но неужели по другому функцию не прокинуть? А лямбды есть?
Evgen
А fn значит не может быть строкой? Или может?
Диёр
лямбды в виде стрелочек добавили в 7.4 можно прокидывать функции так: DB::afterCommit(static function () use ($operation) { PackagePurchaseCreated::dispatch($operation); });
Evgen
Можно на тип чекнуть? Или если инвокать переменную в которой строка то он будет искать статическую функцию?
Диёр
чтобы отправить переменную-функцию нужно явно создать переменную и забиндить к ней функцю аля $fn = static function() {}
Evgen
Писча для раздумий
Sergey
А потом спрашивают почему не хотят писать на пхп
Doge
у нас тут сильно хуже среднего уровня по улице
По опыту проведения собеседований я уже не уверен
Shub
ну реально, насколько может быть сложной система, на 90% состоящая из кафкианских очередей с жсончиками внутри?
Shub
оно все тупо синхронное, с миллионом дублирующихся данных где ни попадя, со стеками глубиной в милю, скрывающих факт того, что один жсон надо переложить из этой очереди в ту
Doge
ну реально, насколько может быть сложной система, на 90% состоящая из кафкианских очередей с жсончиками внутри?
Ну после того, как я видел апи работающее через обёртку вокруг обычных очередей через оракл, потому что люди ЛЮБЯТ оракл, меня уже ничего не удивляет.
Shub
ну в нашем мирке проблема переповторов зафейленных вызовов апишечки - нерешаема в общем виде
Ilya
И что делаете? Закрываете процесс?
Shub
нет, заменяем все очередями
Shub
не то, чтоб я против очередей, но иногда дело доходит до смешного
Shub
https://mobile.twitter.com/vagnernasc28688/status/1215103578345549828
Shub
Дядя Боб медленно, но верно реабилитируется в моих глазах
Ilya
Он же ещё не ответил.
Vladislav
https://twitter.com/jerrynixon/status/1215337376068669441?s=21
Vladislav