PHP Annotated Monthly – November 2018
Hello everyone! Please welcome November’s PHP Annotated Monthly with all the news and notable materials from last month.
Read about PHP 7.3.0RC4, the future of PHP and Zend Framework, PSR-18 standard accepted, RFC from Internals on preloading files, Async PHP, a portion of useful tools, and a lot more!
⚡️ News & Releases
- The future of Zend Engine and Zend Framework — Zeev Suraski in his blog announced that he’ll be leaving Rogue Wave, which acquired Zend company in 2015. Matthew Weier O’Phinney and Enrico Zimuel, who work on Zend Framework, Zend Expressive, Apigility, as well as Dmitry Stogov, the author of PHPNG, are also leaving.
Stefan Priebsch posted an interesting analysis of possible consequences to the PHP ecosystem. - PHP 7.3.0RC4 — Another release candidate shipped on schedule. Read what’s new in PHP 7.3 here, here, and here. Two more RCs are expected, and GA should arrive on December 6.
- PHP 7.1.23, PHP 7.2.11
- 62% of all internet sites will run an unsupported php version in 10 weeks — In 2015 the team decided to prolong PHP 5 support till the end of 2018. Nevertheless, more than a half of all sites still work on PHP 5. See the phpVatch checking top 1 million websites from Alexa Top which reveal their PHP versions. And upgrade your PHP!
- CodeIgniter 4.0.0 alpha1
- PSR-18: HTTP Client — The new standard officially accepted! This will allow applications to remain agnostic of the HTTP client that is used underneath. Check out php-http/httplug, which is a good abstraction based on PSR standards with async interfaces added.
🐘 PHP Internals
- [RFC] Preloading — Dmitry Stogov’s concept is now an official RFC. It proposes to allow preloading files before handling any request. All classes and functions loaded this way will be permanently available in the context of consequent requests without the need to include them. Aside from performance boost, this also opens a room for further optimizations.
- [RFC] Improve openssl_random_pseudo_bytes() — The
openssl_random_pseudo_bytes()
function may output not secure byte sequence quite unobviously. The RFC proposes to throw an exception in such cases explicitly.
🛠 Tools
- ricardofiorani/php-legofy — Transform your images as if they were made out of LEGO bricks.
- spiral/php-grpc — High-performance GRPC server based on spiral/roadrunner. Allows you to run both PHP and Golang services in the scope of a single application.
- alhimik1986/php-excel-templator — Helps you to generate Excel spreadsheets based on templates and placeholders.
- mougrim/php-xdebug-proxy — Dbgp Xdebug proxy. Read more on how to use it here.
- cebe/php-openapi — READ OpenAPI files and make the content accessable in PHP objects.
- makasim/php-fpm-queue — Allows using php-fpm as a simple built-in async queue. Read more about the idea here.
- php-pds/skeleton — A viable approach to standardize the PHP packages skeleton.
- php-casbin/php-casbin — An authorization library that supports access control models like ACL, RBAC, ABAC in PHP.
- brick/math — Arbitrary-precision arithmetic library for PHP.
Symfony
- Symfony 4: HTTP/2 push and preloading
- Deep dive into Symfony’s DependencyInjection
- Week of Symfony #616 (15-21 October 2018)
- Symfony 4.2: Important deprecations
- Certification Exams for Symfony and Twig are now Online!
- eZ Platform v2.3 — CMS based on Symfony
Yii
Laravel
- Laravel Telescope — One more tool in Laravel ecosystem. This time extended debugging dashboard. Detailed review.
- nuwave/lighthouse — GraphQL for Laravel. The tool uses webonyx/graphql-php under the hood.
- beyondcode/laravel-tag-helper — Powerful HTML tag helpers.
- Dangers of Laravel debug mode enabled
- Are you sure you need entrust or laravel-permission to implement your authorization?
- Deploying Laravel with Kubernetes
- Pragmatic search with Eloquent using WHERE LIKE queries
- How to size & scale your Laravel Queues
Async PHP
- mmasiukevich/service-bus — The framework based on Amphp for building apps using patterns Saga, CQRS, EventSourcing, Message Bus.
- clue/reactphp-buzz 2.5 — Simple async HTTP client. Introduction post.
- M6Web/Tornado — One more async engine on PHP with own Event Loop and adapters for ReactPHP и Amp.
- Async Zend Expressive with Swoole
- Asynchronous WEB in 2018. Writing online chat on Websockets using Swoole
- Managing Concurrency: from promises to coroutines
- 🎥 ReactPHP Tutorial #13: Async Downloads
CMS
- Magento Tech Digest #34: Oct 8 – 22, 2018
- Vulnerabilities in Drupal 7, 8
- Drupal release dates — 8.7 – 1 May 2019, 8.8 – 4 Dec 2019
- WordPress 5.0 Beta 1 (2)
- The Month in WordPress: October 2018
Misc
- Analysis of eval() usage in PHP applications
- On testing Repository classes
- 5 types of test doubles and how to create them in PHPUnit
- How to create fixtures and avoid common mistakes
- 7 Tips to Get the Most out of Travis CI
- Concat vs. sprintf vs. interpolation — What do you use for joining strings and variables?
- Organize by domain — Structuring huge code base with DDD.
- array_merge vs. + operator — what’s the difference for arrays?
- Christopher Pitt author of Async PHP book, and preprocess.io writes about creating a blog with preprocessor and JSX-like syntax.
- From Rust to beyond: The PHP galaxy — Writing PHP extension with Rust through FFI.
- Serverless case study: returntrue.win
- PHP is dead… Viva la PHP!
🎥 Audio & Video
- 🎥 PHP Roundtable #79: GDPR for PHP Devs
- 🎥 Videos from PHPConf.Asia 2018
- 🎧 Three Devs & A Maybe Podcast: Running Symfony on AWS Lambda
💡 Fun
- hasegawa-tomoki/php-terminal-nes-emulator — NES emulator in terminal on PHP.
- Get your PHP Roundtable elephpant!
Thanks for reading!
Your JetBrains PhpStorm Team
The Drive to Develop