The PSR-4 Class Loader

The PSR-4 Class Loader

Libraries that follow the PSR-4 standard can be loaded with the Psr4ClassLoader.

Note

If you manage your dependencies via Composer, you get a PSR-4 compatible autoloader out of the box. Use this loader in environments where Composer is not available.

Tip

All Symfony components follow PSR-4.

Usage

The following example demonstrates how you can use the Psr4ClassLoader autoloader to use Symfony's Yaml component. Imagine, you downloaded both the ClassLoader and Yaml component as ZIP packages and unpacked them to a libs directory. The directory structure will look like this:

1
2
3
4
5
6
7
8
9
libs/
    ClassLoader/
        Psr4ClassLoader.php
        ...
    Yaml/
        Yaml.php
        ...
config.yml
demo.php

In demo.php you are going to parse the config.yml file. To do that, you first need to configure the Psr4ClassLoader:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
use Symfony\Component\ClassLoader\Psr4ClassLoader;
use Symfony\Component\Yaml\Yaml;

require __DIR__.'/lib/ClassLoader/Psr4ClassLoader.php';

$loader = new Psr4ClassLoader();
$loader->addPrefix('Symfony\Component\Yaml\\', __DIR__.'/lib/Yaml');
$loader->register();

$data = Yaml::parse(file_get_contents(__DIR__.'/config.yml'));

First of all, the class loader is loaded manually using a require statement, since there is no autoload mechanism yet. With the addPrefix() call, you tell the class loader where to look for classes with the Symfony\Component\Yaml\ namespace prefix. After registering the autoloader, the Yaml component is ready to be used.

This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.