PSR-4 autoloader

PSR-4 autoloader

PHP PSR-4 autoloader

It is great idea to create PSR-4 autoloader packages for PHP. PSR describes a specification for autoloading classes from file paths. It is fully inter-operable, and can be used in addition to any other autoloading specification, including PSR-0. This PSR also describes where to place files that will be autoloaded according to the specification.

Thankfully, PSR-0 (now deprecated) and PSR-4 are autoloading standards that actually map your namespaces to real folders. So, if you’re using PSR-0 or PSR-4–which is extremely likely if you’re using Composer or any modern framework– and a compatible autoloader, you can assume that the classes actually are in folders.

Composer and PSR-4 Autoloading

So, let’s say I want the Devjagat namespace to live in my src folder.

Here’s my folder structure for a generic, framework-independent project:

app
public
src
    Billing
    Contacts
vendor

As you can see, the src folder represents the Devjagat top level namespace. Since I’m using Composer as my autoloader, all I need to do to get my application to autoload my classes is teach Composer how to map namespaces to folders. Let’s do that using PSR-4.

I’m going to open up composer.json and add a PSR-4 autoload section:

{
    "autoload": {
        "psr-4": {
            "Devjagat\\": "src/"
        }
    }
}

So you can see: the left side is the namespace that we’re defining (note that you need to escape the slash separators here by doubling them), and the right side is the directory.

Leave a Reply

error: Content is protected !!