Archive
PHP
Language releases, migrations, and the bills that come with them.
-
PHP 7.2, libsodium, and the password hashing we finally fixed
A users table with md5 and salted sha1 in one column. Why PHP 7.2 does not let you bulk convert any of it, why Argon2i needed a build flag we did not have, and the rehash-on-login code that works.
-
PHP 7.1 in a codebase that still remembers 5.3
PHP 7.1 shipped on 1 December. Nullable types and iterable let me delete guard clauses across 31 functions. ArgumentCountError cost a day and a rollback, and the mcrypt deprecation is a backfill, not a rename.
-
Ten weeks of PHP 7 in production
We moved the platform from PHP 5.6 to 7.0.2 in January and are now on 7.0.3. What broke mechanically, what needed thought, the numbers off our own six boxes, and why strict_types only goes in new files.
-
PSR-7, read twice, and what immutability costs you
I read the new PSR-7 HTTP message interfaces twice before they made sense. Notes on why withHeader() returns a new object, why getBody() is a stream, and why wrapping Symfony’s mutable request is awkward.
-
Composer and PSR-4 in a codebase built on require_once
The ERP loads 181 files per request through require_once chains and an unmaintained PEAR install. How we moved it onto Composer: classmap for the old code, PSR-4 for new code, and the class that only broke on Linux.