This extension implements a valid PSR-0 class loader for Contao 3.
The implementation is based on the Composer\Autoload\ClassLoader
.
This extension is outdated, see the Upgrade information!
Place all files in system/modules/_autoload
in your Contao installation.
Usage works similar to the Contao class loader, except that you do not
need to include every class file if you follow PSR-0 standards. Use the
following example to implement the class loader in your config/autoload.php
:
<?php
/**
* Register namespace
*/
NamespaceClassLoader::add('Isotope', 'system/modules/isotope/library');
In Contao 4, the only way to install extensions is using Composer. Therefore, you will not need this extension but should use Composer's class loader.
To be compatible with Contao 3 extension repository and Contao 4, you will need to require at least Contao 3.3 and set it up as follow:
-
Define your namespaces or classes in
composer.json
. -
Remove the dependency for
terminal42/contao-namespace-class-loader
from yourcomposer.json
-
Keep the dependency in the old Extension Repository
-
Make
_autoload
an optional dependency in yourautoload.ini
like so:requires[] = "*_autoload"
-
Only call
NamespaceClassLoader
in yourautoload.php
if the class is actually available:if (class_exists('NamespaceClassLoader')) { NamespaceClassLoader::add( ... ); }
If the extension is installed via Composer, the classes will be loaded
by the Composer autoloader. When installed using the old extension
repository, the _autoload
extension will be added and the classes
will work like before.
See our commit on how we accomplished this in Isotope eCommerce.