Cover of the book Symfony 5: The Fast Track

Symfony 5: The Fast Track is the best book to learn modern Symfony development, from zero to production. +300 pages in full color showing how to combine Symfony with Docker, APIs, queues & async tasks, Webpack, Single-Page Applications, etc.

Buy printed version
WARNING: You are browsing the documentation for Symfony 2.6 which is not maintained anymore. Consider upgrading your projects to Symfony 5.1.

The PSR-4 Class Loader

2.6 version
Maintained Unmaintained

The PSR-4 Class Loader

New in version 2.5: The Symfony\Component\ClassLoader\Psr4ClassLoader was introduced in Symfony 2.5.

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 Symfony\Component\ClassLoader\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.