Свежая подборка со ссылками на новости и материалы. В выпуске: игра-головоломка, Yii 2.0.14, PHP-DI 6.0 и другие релизы, предложение о неизменяемых классах из PHP Internals, порция полезных инструментов, и многое другое.
Приятного чтения!

Новости и релизы


  • habr Yii 2.0.14 — Под капотом больше сотни улучшений и исправлений почти во всех компонентах фреймворка. Кроме того, это последний релиз в версии Yii 2.0, содержащий улучшения. В дальнейшем core-команда сконцентрирует силы на разработке версии 2.1.
  • PHP-DI 6.0 — Добавлена компиляция контейнера и другие улучшения.
  • В nginx 1.13.9 добавлен HTTP/2 Server Push — Пара примеров использования с PHP тут и тут.
  • Sylius v1.1.0

PHP Internals


  • [RFC] Immutable classes and properties — Предлагается реализовать неизменяемые классы и свойства:

    immutable class Email {
      public $email;
     
      public function __construct ($email) {
        $this->email = $email;
      }
    }
     
    $email = new Email("foo@php.net");
    $email->email = "bar@php.net" // Call will result in Fatal Error
    

    class User {
      private $id;
      public immutable $email;
     
      public function __construct ($id, $email) {
        $this->id = $id;
        $this->email = $email;
      }
    }
    


Инструменты


  • rest-control/rest-control — Инструмент для тестирования и валидации REST-сервисов.
  • fredsted/webhook.site — Полезный инструмент для тестирования вебхуков.
  • php-school/cli-menu — Интерактивные меню для командной строки.


Материалы для обучения




Занимательное


  • returntrue.win — Игра-головоломка по РНP, в которой требуется передать такой аргумент в функцию, чтобы она вернула true. Возможны несколько вариантов ответов.
    Скрытый текст

Спасибо за внимание!

Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.

Прислать ссылку
Поиск ссылок по всем дайджестам
< Предыдущий выпуск: PHP-Дайджест № 125

Комментарии (17)


  1. Xakki
    26.02.2018 02:51

    Может кто нибудь привести пример реального использования immutable, где private и protected не применимо?! Я уже голову сломал в догадках.


    1. negasus
      26.02.2018 07:20

      Думается, только сокращение кода — не писать геттеры на не-public свойства, а просто immutable


      1. VolCh
        26.02.2018 08:39

        Плюс гарантии неизменяемости, в том числе при наследовании.


    1. VolCh
      26.02.2018 08:39

      Скорее не "private и protected неприменимо", а "писать меньше кода с гарантиями неизменяемости и идентичности по значению на уровне языка".


    1. AlexLeonov
      26.02.2018 10:02

      Я могу. Value-objects.


      1. VolCh
        26.02.2018 10:54

        VO, DTO и т. п. вполне реализуются на private+setters, но RFC предлагает для тех же целей писать меньше кода и получать больше гарантий неизменяемости.


        1. Fesor
          27.02.2018 03:31

          мне больше понравилась идея вернуть by value объекты из php4 (естественно не для всего а только для того что отмечено кейвордом).


    1. igordata
      26.02.2018 15:02
      +1

      Похоже, что пример реального использования immutable — как раз выкидывание фатала, если где-то случайно происходит изменение того, что нельзя было менять, например айдишника юзера. Именно в невозможности это сделать и есть радость от immutable, дарующая душевное спокойствие тимлидам. Получается так.


      1. VolCh
        26.02.2018 20:25

        Сравнение по значению


    1. qRoC
      26.02.2018 18:00

      1) Более наглядно что объект неизменяемый;
      2) если свойство — указатель на другой класс, то ни геттеры ни ограничение доступов не спасёт;
      3) COW (фантазии?).


  1. xotey83
    26.02.2018 13:27

    returntrue.win — простенькая штука. На все 11 вопросов достаточно легко ответил. Только 6-й заставил немного подумать.


  1. Voenniy
    26.02.2018 14:42

    Еще php головоломки
    github.com/chr-hertel/php-magic-tricks


    1. pronskiy Автор
      26.02.2018 15:50

      Угу, были в 122 выпуске


  1. gro
    26.02.2018 19:28

    В дополнения к иммутейблам бы ещё какой-нибудь модификатор, типа, изнутри свойство менять можно, а снаружи оно доступно только для чтения.


    1. nbytes
      26.02.2018 21:14

      Так это же можно реализовать нужными геттерами и сеттерами?


    1. pronskiy Автор
      26.02.2018 21:52

      Было интересное предложение по аксессорам несколько лет назад wiki.php.net/rfc/propertygetsetsyntax-v1.2


      1. POPSuL
        27.02.2018 09:49

        Да, жаль не приняли...