Contao Autoloader erweitern

Leider gibt es momentan keine schöne Lösung den Autoloader von Contao zu erweitern. Der Autoloader in Contao 2.9.4 findet sich unter system/functions.php. Er wird dort mittels der __autoload Funktion von PHP implementiert. Ich vermutete, dass dies aus Gründen der Kompatibilität auf diese Weise gelöst wurde. In der Tat gibt es ein Feature-Ticket, welches eine Überarbeitung des Autoloaders vorsieht und sogar anerkannt wurde. Leider ist jedoch seit ca. elf Monaten nichts passiert.

Um updatesicher den Autoloader zu erweitern, kann man folgendermaßen vorgehen:

In der initconfig.php kann eine eigene Klasse eingebunden werden, die über spl_autoload einen Autoloader registriert. Das könnte beispielsweise so aussehen:

require_once(dirname(__FILE__).'/../../myclasses/myautoloader.php');

In dieser Datei wird der eigene Autoloader implementiert. Ein ganz rudimentärer Code als Beispiel:

class Autoloader
{
  /**
   * @param string $class_
   */
  public static function autoload($class_)
  {
    $file=dirname(__FILE__).'/'.strtolower($class_).'.php';
    if(file_exists($file))
    {
      require_once $file;
      return;
    }
      __autoload($class_);
  }
}
// Register autoloader
spl_autoload_register(array('Autoloader', 'autoload'));

Der Trick an der Sache ist, die normalerweise magisch aufgerufene Methode __autoload explizit am Ende des eigenen Autoloaders aufzurufen. Ich habe das nicht in aller Ausführlichkeit getestet, also ohne Garantie.

Ein Gedanke zu “Contao Autoloader erweitern

  1. Pingback: Einen eigenen Data Container in Contao | Tobias Seckinger

Kommentar verfassen