PHP Annotated Monthly – September 2018
Hello everyone! Please welcome September’s PHP Annotated Monthly with all the news and notable materials from last month.
Read about PHP 7.3.0 RC 2, Codeception 2.5, Laravel 5.7, Drupal 8.6 and other releases, HHVM ending support of PHP, typed properties in PHP, news from PHP Internals, async PHP, security in PHP, a portion of useful tools, and much more!
⚡️ News & Releases
- PHP 7.3 RC 2 — Release candidates cycle has started for the 7.3 branch. We may expect at least 4 more RCs for stabilization. Meanwhile, you can read about What’s new in PHP 7.3.
- PHP 7.2.10, PHP 7.1.22, PHP 7.0.32, PHP 5.6.38
- HHVM is ending support for PHP — HHVM v3.30 which is planned for release in December will be the last version to support PHP. The HHVM team recommends that projects either migrate entirely to the Hack language or to PHP 7. This was pretty much expected, the team outlined their plans a year ago, and the popular frameworks and projects like Symfony, Laravel, Yii, and Doctrine dropped HHVM support even earlier. We would like to thank the HHVM team for pushing PHP further, and wish them good luck!
- PHP-FIG summer updates — PSR-17 HTTP Factories accepted, PSR-18 HTTP Client spec is in review, the PSR-14 Event Dispatcher draft is published, and lately PHP-FIG brought PSR-5 PHPDoc back to draft and split the PSR-19 PHPDoc Tags part into a separate one.
- nikic/FastRoute is looking for a maintainer! Several years ago Nikita Popov proved that routing could be really fast with PHP. Read his excellent article Fast request routing using regular expressions.
- PhpStorm 2018.3 Early Access Program has started
- Codeception 2.5 — The update delivers snapshot testing capabilities. If you want the same with PHPUnit you may try spatie/phpunit-snapshot-assertions.
🐘 PHP Internals
- [RFC] Typed Properties 2.0 — The proposal has been accepted with 70 votes in favor and one vote against! Typed properties are going to be a part of PHP 7.4. This is a huge win for the PHP community and a step towards a safer codebase.
class User { public int $id; public string $name; }
- An attempt to implement “preloading” ability — Dmitry Stogov is a main author of the PHPNG project, which later became a base for PHP 7. This time he proposed a PoC to allow applications to preload code before PHP handles HTTP requests.
🛠 Tools
- ankitpokhrel/tus-php — A pure PHP server and client for the tus.io open protocol for resumable file uploads. The protocol was adopted by Vimeo, Cloudflare, and Git LFS. Read an overview.
- paragonie/easydb — An easy-to-use PDO wrapper. Prepared statement caching available in paragonie/easydb-cache.
- colinodell/json5 — PHP implementation of encoding/decoding for the JSON5 standard, which allows comments, trailing commas, single-quoted strings, and more.
- konsulting/porter — A docker based multi-site setup for local PHP development. Inspired by Laravel Valet, Homestead, and Vessel.
- thecodingmachine/safe — Package includes wrappers around standard PHP functions so that they throw exceptions instead of returning
false
. Read more in the post. - rambler-digital-solutions/hydrogen — A faster and more convenient Doctrine ORM abstraction layer.
- wbars/PHPFoldings — A PhpStorm plugin for folding some of the language constructions and making codebase cleaner: getters/setters, closures,
$this->
and some others.
Symfony
- symfony/panther — A new component for E2E testing based on ChromeDriver announced. Analogous to Laravel Dusk and AcceptanceTests in Codeception.
- 4 Ways to Add Global Option or Argument to Symfony Console Application
- A Week of Symfony #612 (17-23 September 2018)
- How to Mix Security and Form with Symfony
- KnpUniversity is now SymfonyCasts
Yii
- Yii development notes #24 — New core developer, Yii 3.0 updates and plans, and more.
- forum.yiiframework.com — New Yii Framework discussion forum.
- akiraz2/yii2-ticket-support — Yii2 Ticket Support Module, easy, flexible, multilang, MongoDB, works with mailbox.
Laravel
- Laravel 5.7 released — New resources directory structure, integrates Symfony Dump Server, testing artisan commands, and other improvements.
- Laravel Zero 5.7 released
- saleem-hadad/larecipe — Good-looking Markdown-based documentation for Laravel apps.
- railken/lara-eye — Converts a query string into nested where clauses for a QueryBuilder.
- antonioribeiro/health — Laravel server & app health monitor and notifier.
- Step-by-Step Guide to Building Your First Laravel Application
- What is APP_KEY and why it’s needed
- 🎥 Building LaraShoppe — Screencast on building an online shop from scratch using Laravel, Laravel Nova, Vue.js, and Tailwind CSS.
Async PHP
- friends-of-reactphp/mysql 0.4 — Major update of the async MySQL client. Introduces promise-based APIs and streaming large result sets! Now it’s possible to efficiently process thousands or millions of records from your MySQL database with ReactPHP. Read more in the blogpost by Christian Lück.
- recoilphp/react — Converts ReactPHP promises into coroutines.
- reactphp/cache — Async, Promise-based cache interface for ReactPHP. Read what’s new.
- 🎥 ReactPHP Tutorial #12: Routing
CMS
- Drupal 8.6.0 released
- On Drupal 7, 8 and 9 — Drupal 7 and 8 will be supported until November 2021, while Symfony 3 is supported. Drupal 9 will be released in 2020.
- WordBits.io — Interesting projects where you can share snippets for WordPress and download them as small ready-to-use plugins.
- Magento Tech Digest #32: Sept 17 – 24, 2018
🚨 Security
- PHP Encryption Methods for Passwords & Other Sensitive Data
- Slice Of PIE #00 — The first Q&A blog post from security experts Paragon Initiative, answering the questions: Why is hybrid encryption better than direct asymmetric encryption? and, What encryption algorithms should developers use?
- An automated mass attack on outdated WordPress installations
Misc
- Matthias Noback: Use cases when domain model can be reused
- Matthias Noback: Final classes by default, why?
- Matthias Noback: Assertions and assertion libraries
- Larry Garfield: Don’t use Mocking libraries
- Tomas Votruba: 7 Tips to Write Exceptions Everyone Will Love
- Export data from tables in a custom format with scripted extensions in JetBrains IDE
- Creating a simple PHP application on Google App Engine
- Community-driven PHP 8 Wish List
🎥 Audio & Video
- PHP Roundtable #78: DocBlocks, Annotations, PSR-5 & The Like
- PHP Roundtable #77: Tech Interviews for Self-Taught PHP Programmers
Thanks for reading!
Your JetBrains PhpStorm Team
The Drive to Develop