Skip to content

Commit

Permalink
First shot of a documentation of the new PSR-4 class loader.
Browse files Browse the repository at this point in the history
  • Loading branch information
derrabus committed Mar 16, 2014
1 parent 739f43f commit 17166bd
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 0 deletions.
1 change: 1 addition & 0 deletions components/class_loader/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ ClassLoader

introduction
class_loader
psr4_class_loader
map_class_loader
cache_class_loader
debug_class_loader
63 changes: 63 additions & 0 deletions components/class_loader/psr4_class_loader.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
.. index::
single: ClassLoader; 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
:class:`Symfony\\Component\\ClassLoader\\Psr4ClassLoader` autoloader to use
Symfony's Yaml component. Let's imagine, you downloaded both components –
ClassLoader and Yaml – as ZIP packages and unpacked them to a libs directory.

The directory structure will look like this:

.. code-block:: text
/
+- libs
| +- ClassLoader
| | +- Psr4ClassLoader.php
| | +- …
| +- Yaml
| +- Yaml.php
| +- …
+- config.yml
+- test.php
In ``demo.php``, to parse the file ``config.yml``, you can use the following
code.

.. code-block:: php
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(__DIR__ . '/demo.yml');
First of all, we've loaded our class loader manually using ``require`` since we
don't have an autoload mechanism, yet. With the ``addPrefix()`` call, we told
the class loader where to look for classes with the namespace prefix
``Symfony\Component\Yaml\``. After registering the autoloader, the Yaml
component is ready to use.

.. _PSR-4: http://www.php-fig.org/psr/psr-4/

0 comments on commit 17166bd

Please sign in to comment.