Начиная с PHP 8 в PHP были добавлены атрибуты, которые доступны теперь нативно. В будущем они полностью заменят аннотации. Библиотеки стали переходить на использование нативного синтаксиса. Если вы используете doctrine, то при миграции на новую версию PHP возникает задача миграции аннотаций на атрибуты. Сделать это можно при помощи rector. Для этого нужно: Добавить rector как
Browsing category Исходный код
Жил я себе спокойно, разрабатывал приложения, углубился в базы данных, почитал про highload, и умные люди на конференции в прошлом году заявляли, что в PgSQL операция count(id) весьма медленная. Интересно, никогда об этом не думал, что там — посчитать по индексу… а, нет, не по индексу, полный скан, значит не так уж и быстро… В
С тех пор, как вся конфигурация Symfony кешируется с контейнером для лучшей производительности , мы по очевидным причинам не должны использовать базу данных что бы где-то «напечатать» новую конфигурацию, нам нужно что-то умнее. Использование Symfony Voters Symfony использует Voters что бы определить доступ к URL и другим ресурсам. Множество voters которые входят в комплект поставки
Предположим, есть задачка, вывести дерево. Под рукой PHP, а как view — Twig. Пусть структура данных на backend будет такой: $tree = [ [ ‘name’ => ‘foo’, ‘children’ => [ [ ‘name’ => ‘bar’, ‘children’ => [ [ ‘name’ => ‘baz’, ‘children’ => [ ], ], [ ‘name’ => ‘baz’, ‘children’ => [ ], ],
Иногда требуется выбрать не всю таблицу, а только некоторые поля из связи в контроллере. Сделать это можно так: $user = User::with([‘department’ => function ($q) { $q->select([‘id’,’name’]); } ])->get();
Шаблоны blade используются для представления данных, нам нужно добавить некоторые проверки и If структуры. Один из примеров это цикл @foreach, когда нужно выполнить какие-либо действия с первым или последним элементом массива. Blade не поддерживает эту функциональность самостоятельно, итак, что же нам делать? Под капотом, Blade-файлы в действительности преобразуются в чистый PHP. Итак, хитрость в том, что мы можем
Маленькая функция для преобразования размера в байтах в человекочитаемый вид: <?php function human_filesize($bytes, $decimals = 2) { $size = array(‘B’,’kB’,’MB’,’GB’,’TB’,’PB’,’EB’,’ZB’,’YB’); $factor = (int) floor((strlen($bytes) — 1) / 3); return sprintf(«%.{$decimals}f», $bytes / pow(1024, $factor)) . @$size[$factor]; } Использование <?php echo human_filesize(filesize(‘example.zip’)); Источник
Ваше приложение может использовать старый, небезопасный алгоритм хеширования для хранения пароля, такой как MD5 (без использования соли) Эта статья объясняет как преобразовать уже имеющиеся пароли, зашифрованные уязвимым алгоритмом в пароли зашифрованные с использованием безопасного метода хеширования (например с использованием Bcrypt ) Что бы решить проблему, мы сделаем конвертацию на лету, когда пользователь успешно входит в
В коллекциях Laravel 5.1 нет функции like для коллекций, но можно написать подобное поведение при помощи filter. $searchBy = ‘gr’; $data = collect(array(‘name’ => ‘gregg’, ‘name’ => ‘john’, ‘name’=> ‘alice’)); $data = $data->filter(function ($item) use ($searchBy) { return (bool) preg_match(‘#^’.preg_quote($searchBy).’.*$#us’, $item[‘name’]); }); SQL like preg_match % .* _ .
Проверка PHP-кода на ошибки, cli. find . -type f -name ‘*.php’ -exec php -l ‘{}’ ‘;’ log=`find . -type f -name ‘*.php’ -exec php -l ‘{}’ ‘;’ | grep -v ‘No syntax ‘`; if [ x»${log}» != x ]; then exit 1; else echo «No syntax errors detected in PHP scripts»; fi