Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы.
Приятного чтения!
Новости и релизы
- PSR-11 Container Interface официально принят
- PHP — первый язык с современной криптографий в стандартной поставке — О принятом недавно предложении включить библиотеку Libsodium в ядро начиная с PHP 7.2.
- PHP 7.0.16, PHP 7.1.2
- Обновлена ZCE — сертификация по PHP от Zend — Прислал im_special_one.
- atoum 3.0.0 — Мажорное обновление фреймворка для модульного тестирования.
- ThirtyBees 1.0.0 — Первый релиз форка PrestaShop 1.6.
- HHVM 3.18 — Свежий LTS релиз альтернативной виртуальной машины PHP от Facebook.
PHP
- RFC: list() Reference Assignment — Принято на голосовании небольшое улучшение для
list()
позволяющее использовать ссылки:
$array = [1, 2]; list($a, &$b) = $array; // Эквивалентно: $array = [1, 2]; $a = $array[0]; $b =& $array[1];
Инструменты
- wapmorgan/MediaFile — Библиотека для чтения метаданных из аудио/видео файлов различных форматов.
- Fistlab PHP Components — Инициатива по разработке часто используемых компонентов на различных языках программирования. Работа начата с PHP и уже готовы контейнер, репозиторий, бд.
- JWHennessey/phpInsight — Слегка заброшенная, но интересная библиотека для анализа тональности текста. Альтернативное решение: mizterp/caroline.
- paragonie/PHP-Cookie — PHP 7 библиотека для безопасной работы с куками. В тему пост об использовании SameSite куки для защиты от CSRF.
- www.php-middleworld.com — Ресурс с подборкой PSR-7 совместимых middleware-компонентов.
- php-ai/php-ml — Реализацией алгоритмов машинного обучения на PHP.
- miniflux/miniflux — Минималистичная читалка RSS.
- phanan/kupo — Автоматизированный чек-лист для проверки сайта перед запуском.
- webonyx/graphql-php — Реализация спецификации GraphQL. Порт эталонной реализации на JavaScript graphql/graphql-js.
- sebastianfeldmann/phpbu — Инструмент для создания резервных копий файлов и баз данных. Умеет шифровать бэкапы и отправлять в хранилище (Amazon s3, Dropbox, rsync, SFTP, FTP).
- web-push-libs/web-push-php — Реализация протокола WebPush для отправки уведомлений в браузер.
- thephpleague/fractal — Библиотека для трансформации и вывода данных в API, умная замена
json_encode()
. Свежий туториал по использованию.
Материалы для обучения
Symfony
- symfony-bundles/json-request-bundle — Бандл для работы с json-запросами как с обычными запросами.
- Новое в Symfony 3.3: Внедрение геттера — Интересная экспериментальная возможность.
- Неделя Symfony #529 (13-19 февраля 2017)
- Неделя Symfony #530 (20-26 февраля 2017)
Yii
- Модули и расширения для Yii 2 от Zfort Group — Представлены компоненты: yii2-cart, yii2-comments, yii2-rbac и другие.
- Yii 2.0: релиз расширения Debug 2.0.8
- YiiPowered.com — Галерея проектов на Yii. Код доступен на GitHub.
- Почему нельзя забывать явно завершать вложенные транзакции в Yii2 — Прислал haruatari.
- Построение и тестирование REST API в Yii2
Laravel
- imanghafoori1/laravel-widgetize — Виджеты для Laravel.
- Туториал по Laravel Dusk
- Авторизация в роутах Laravel по группам
- Laravel 5. Иерархический RBAC для самых маленьких
- Реализация чистой архитектуры (Clean Architecture) с примерами на PHP — Доступен код приложения.
- Об использовании RabbitMQ, PHP и Node.js
- Пишем асинхронные библиотеки на PHP — Туториал на примере реализации asyncphp/paper — асинхронного конвертера HTML в PDF.
- Туториал по TDD на примере Sylius — #Sylius, #Behat, #phpspec
- Awesome Doctrine — Подборка полезных ресурсов по Doctrine. Прислал im_special_one.
- Конвенция по тестированию
- Отладка JavaScript и PHP одновременно в PhpStorm
- Использование Zend-InputFilter
- Об утиной типизации в PHP
- Шаблоны проектирования для людей — Ультра простое объяснение паттернов с примерами на PHP.
- Производительность PHP 5 vs PHP 7 vs PHP 7.1 vs PHP+JIT — Обзор улучшений по части производительности и синтетические тесты.
- «Hello, (real) world!» на php в 2017 году
- PrestaShop. О глюке в многоуровневой навигации
- Ответ на введение в проектирование сущностей, проблемы создания объектов
- Где живут ваши объявления? / Блог компании Avito
- Архитектура растущего проекта на примере ВКонтакте
- MySQL и MongoDB — когда и что лучше использовать
- Пятиминутка PHP Выпуск №26 — Rust — Расширяем кругозор и обсуждаем язык программирования Rust.
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Прислать ссылку
Быстрый поиск по всем дайджестам
< Предыдущий выпуск: PHP-Дайджест № 102
Комментарии (22)
zelenin
27.02.2017 02:33+2Awesome Doctrine — Подборка полезных ресурсов по Doctrine. Прислал im_special_one.
на данный момент там ни одного ресурса. зато есть около десяти очень простых (чуть ли не банальных) примеров использования доктрины, уложившихся в строк 20 кода. А больше там нет ничего.
pronskiy
27.02.2017 02:46+2Хорошая возможность дополнить, для этого же и создаются такие репозитории :-)
nazarpc
27.02.2017 07:34+1Пятиминутка PHP очень странная штука. Мало того, что выходит нерегулярно, так ещё и не пятиминутка ни разу, а на засыпку — даже не о PHP. Может переименовать стоит?
PQR
27.02.2017 13:03+6Выходит нерегулярно — таков он творческий процесс, если есть желание что-то записать — срочно пишу!
Не о PHP — выпуск о Rust был первым «не о PHP», и, возможно его стоило бы опубликовать в рамках какого-то другого проекта… но у меня нет планов по записи серии подкастов о Rust или подкаста «о программировании в целом», так что публикую в уже известный и готовый канал распространения.
Стоит ли переименовывать в «Подкаст о PHP и не только» — стоит, если есть планы частенько записывать выпуски из серии "… и не только", но пока таких планов нет.
Оставайтесь на связи, я планирую продолжать выпуски именно о PHP и в формате 5-10 минут (по большей части)!
bolk
27.02.2017 08:00+2PHP — первый язык с современной криптографий в стандартной поставке — О принятом недавно предложении включить библиотеку Libsodium в ядро начиная с PHP 7.2.
Опять всё в процедурном стиле :(
tzlom
27.02.2017 20:16А чего вы ожидали? Libsodium на си написан.
zelenin
28.02.2017 01:45+1php api к Libsodium не зависит от исполнения самой Libsodium
tzlom
28.02.2017 12:22А вот тут вы не правы, это библиотека криптографии, поэтому накручивая любые штуки к ней вы теряете гарантии что она работает правильно, поэтому только прямой биндинг API. А дальше уже можете делать что угодно, но никаких гарантий что это будет правильно (с точки зрения криптографии в первую очередь) работать.
zelenin
28.02.2017 12:32+1прямой биндинг и использование неймспейсов/ооп-подхода опять же не пересекаются. это не навороты.
tzlom
28.02.2017 13:42+3Никто не запрещает вам сделать ООП библиотеку которая будет внутри использовать эти функции, но в криптографии есть места, когда нужно чётко представлять циклы жизни объектов, например хранилища ключей, которые должны быть очищены специальной функцией которая их сотрёт, а не просто освободит память.
Плюсы ООП:
— простой API
Минусы ООП:
— Нельзя воспользоваться примерами от оригинальной библиотеки (и это плохо, т.к. примеры написаны специалистами по криптографии и авторами библиотеки, а новые примеры напишет неизвестно кто и вероятность того что в них не будет ошибок ниже чем у примеров к оригинальной библиотеке)
— Нужно писать документацию, разъясняющую циклы жизни объектов, как выполняются копирования итд
— Потенциальные проблемы с GC и финализацией структур не в том месте где она должна произойти
— Больше трудозатрат
— Потенциальные ошибки в работе с памятью
Будь это любая другая библиотека я бы с вами согласился, но конкретно с этой решение абсолютно правильное
smple
27.02.2017 17:26+1о psr/container теперь принят отлично ото раньше был container-interop, как раз заканчиваю свою библиотеку и сразу стандарт который она имплементит
red_led
28.02.2017 00:06list() Reference Assignment интересное предложение, но как должно работать
?[&$a, &$b] = [$b, $a];
bolk
28.02.2017 08:38Как
$a = &$b; $b = &$a;
Ровно так же.red_led
28.02.2017 11:44Не логично. Если без ссылок, то
сделает не как вы написали, а поменяет местами значения. А с ссылками пролучается они должны указывать друг на друга? Или молча поменяться без ссылок? Или выдать варниг/нотис?[$a, $b] = [$b, $a];
bolk
28.02.2017 11:59Нелогично ему :) Потому что у вас передача по значению. Представьте себе, что это просто цикл, который выполняет последовательные действия и всё встанет на свои места.
Не запуская, попробуйте угадать результат (на PHP5):
$a = []; list($a[], $a[]) = [1,2]; var_dump($a); $a = [1]; list($a[], $a[]) = $a; var_dump($a);
europanzer
02.03.2017 13:50К сожалению, расширения yii2mod нельзя назвать гибкими. Если в приложении уже есть компонент с тем же именем, например 'image', не получится использовать расширение yii2mod/yii2-image. Думаю, это касается и остальных расширений.
SamDark
Fistlab PHP Components без намёка на документацию. Как вообще так можно?
zelenin
если посмотреть код, то ясно, что это даже не стоит обсуждать — какие-то поделки, коих тысячи на гитхабе, и каждый программист такое делал. Очень странно, что такое попало в статью.
catanfa
смысл инициативы не в качестве кода, а в том, что все эти поделки будут портированы максимально близко, насколько это позволяют отличия в синтаксисе, на все другие популярные языки, так что, по задумке автора, единожды изучив весь набор его приблуд, разработчик сможет прыгать между целыми языками очень просто.
Хотя не совсем понятно, для чего всё-таки это может понадобиться..