Дайджест PHP #10

В выпуске: PHP 7.3 alpha 4, ReactPHP 1.0 LTS и другие релизы, свежее предложение «Namespace Visiblity for Class, Interface and Trait» из PHP Internals, ведеозаписи докладов и вебинаров, порция полезных инструментов, и многое другое.
Приятного чтения!

[sendpulse-form id=”278″]

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

  • PHP 7.3.0 alpha 4 — Последняя «альфа» в цикле. Первый бета-выпуск запланирован на 2 августа. К списку новых возможностей добавится недавно принятое предложение о введение новых функций array_key_first()/array_key_last() для работы с массивами:
    $array = ['a' => 1, 'b' => 2, 'c' => 3];
     
    $firstKey = array_key_first($array); // 'a'
    $lastKey = array_key_last($array); // 'c'

    Этап голосования прошло предложения Deprecations for PHP 7.3, в котором несколько возможностей объявлены устаревшими. Также устаревшими в PHP 7.3 будут объявлены константы нечувствительные к регистру.
    Что касается предложения по типизированным свойствам, то его решено отложить до следующей версии, которая, вероятно, PHP 8.0.

  • Обновления всех актуальных веток PHP с исправлениями ошибок безопасности:
    • PHP 7.2.8
    • PHP 7.1.20
    • PHP 7.0.31
    • PHP 5.6.37
  • PhpStorm 2018.2 Public Preview — Среди нововведений: обновленный интерфейс и поддержка touch bar, улучшенное автодополнение с учетом пространств имен, структурный поиск и замена, упрощенная установка CodeSniffer/MessDetector, и другие улучшения.

PHP Internals

[RFC] Namespace Visiblity for Class, Interface and Trait — Предлагается ввести модификаторы доступа для классов, интерфейсов и трейтов для ограничения использование по пространству имен:

Скрытый текст
namespace Example {
    public class A 
    {
       private $property;
    }
 
    protected class B
    {
       public $property;
    }
 
    private class C
    {
       protected $property;
    }
}
 
namespace OtherVendor {
    public class Factory
    {
        public function A()
        {
            return new \Example\A();  // Allowed by public
        }
 
        public function B()
        {
            return new \Example\B();  // Not allowed because 
                                       // namespace is not shared
        }
 
        public function C()
        {
            return new \Example\C();  // Not allowed because
                                       // not from same namespace
        }
    }
}

Инструменты

  • atlasphp/Atlas.Orm 3.0 — Интересная ORM.
  • makasim/values — Библиотека пытается объединить лучшее из мира объектов и массивов. Работаете с объектами как обычно, а под капотом будут использоваться массивы.
  • AI-BOLIT — Бесплатный антивирусный сканер для PHP-сайтов.
  • spatie/crawler — Мощный краулер на базе Guzzle, а также Chrome и Puppeteer для рендеринга JavaScript-сайтов.
  • spatie/code-outliner — Пакет создаст визуальное представление вашего кода, чтобы понять как он воспринимается, абстрагировавшись от содержания.

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

Источник: https://habr.com/company/zfort/blog/417897/