Implements a PSR-0 class loader for Contao 3 (based on Composer's ClassLoader)
Switch branches/tags
Clone or download

README.md

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.

This extension is outdated, see the Upgrade information!

Usage

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');

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.

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:

  1. Define your namespaces or classes in composer.json.

  2. Remove the dependency for terminal42/contao-namespace-class-loader from your composer.json

  3. Keep the dependency in the old Extension Repository

  4. Make _autoload an optional dependency in your autoload.ini like so:

    requires[] = "*_autoload"
    
  5. Only call NamespaceClassLoader in your autoload.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.