PSR-0 mapped the entire namespace onto the path, so AppReportBuilder had to live at src/App/Report/Builder.php — the vendor and package name repeated inside a directory that was already…
Composer can install a package either as a downloaded archive or as a git clone. The default depends on package metadata and on whether the version is a…
PSR-4 resolves a class by converting the namespace to a path and checking the filesystem. That is one or more stat calls per class, on every request, for…
Namespaced code can import classes with use, but until 5.6 functions and constants had no equivalent. Calling a namespaced function meant either fully qualifying it every time or…
Projects accumulate a README section listing the commands nobody remembers: the linter with its config path, the test suite with its flags, the cache clear that has to…
PSR-4 autoloading is triggered by a class name PHP cannot resolve. Functions and constants have no such hook, so a helpers file has to be loaded eagerly —…
Two hundred and forty require_once calls where load order was load-bearing, moved onto an autoloader one namespace at a time without a big-bang rewrite.
Two applications share a client library, so it should be a package. Packagist is public, running Satis is a server nobody has volunteered to own, and copying the…