Namespace Class Loader for Contao 3
This extension implements a valid PSR-0 class loader for Contao 3.
The implementation is based on the Composer\Autoload\ClassLoader
., (*1)
This extension is outdated, see the Upgrade information!, (*2)
Usage
Place all files in system/modules/_autoload
in your Contao installation., (*3)
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
:, (*4)
<?php
/**
* Register namespace
*/
NamespaceClassLoader::add('Isotope', 'system/modules/isotope/library');
Upgrade to Contao 4
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., (*5)
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:, (*6)
- Define your namespaces or classes in
composer.json
.
- Remove the dependency for
terminal42/contao-namespace-class-loader
from your composer.json
- Keep the dependency in the old Extension Repository
-
Make _autoload
an optional dependency in your autoload.ini
like
so:, (*7)
requires[] = "*_autoload"
-
Only call NamespaceClassLoader
in your autoload.php
if the
class is actually available:, (*8)
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., (*9)
See our commit on how we accomplished this in [Isotope eCommerce][3]., (*10)