Documentation

The SplAutoloader Interface - Zend_Loader

The SplAutoloader Interface

Overview

While any valid PHP callback may be registered with spl_autoload_register(), Zend Framework autoloaders often provide more flexibility by being stateful and allowing configuration. To provide a common interface, Zend Framework provides the SplAutoloader interface.

Objects implementing this interface provide a standard mechanism for configuration, a method that may be invoked to attempt to load a class, and a method for registering with the SPL autoloading mechanism.

Quick Start

To create your own autoloading mechanism, simply create a class implementing the SplAutoloader interface (you may review the methods defined in the Methods section). As a simple example, consider the following autoloader, which will look for a class file named after the class within a list of registered directories.

  1. require_once 'Zend/Loader/SplAutoloader.php';
  2.  
  3. class Custom_ModifiedIncludePathAutoloader implements Zend_Loader_SplAutoloader
  4. {
  5.     protected $paths = array();
  6.  
  7.     public function __construct($options = null)
  8.     {
  9.         if (null !== $options) {
  10.             $this->setOptions($options);
  11.         }
  12.     }
  13.  
  14.     public function setOptions($options)
  15.     {
  16.         if (!is_array($options) && !($options instanceof Traversable)) {
  17.             throw new InvalidArgumentException();
  18.         }
  19.  
  20.         foreach ($options as $path) {
  21.             if (!in_array($path, $this->paths)) {
  22.                 $this->paths[] = $path;
  23.             }
  24.         }
  25.         return $this;
  26.     }
  27.  
  28.     public function autoload($classname)
  29.     {
  30.         $filename = $classname . '.php';
  31.         foreach ($this->paths as $path) {
  32.             $test = $path . DIRECTORY_SEPARATOR . $filename;
  33.             if (file_exists($test)) {
  34.                 return include($test);
  35.             }
  36.         }
  37.         return false;
  38.     }
  39.  
  40.     public function register()
  41.     {
  42.         spl_autoload_register(array($this, 'autoload'));
  43.     }
  44. }

Configuration Options

This component defines no configuration options, as it is an interface.

Available Methods

__construct ( $options = null )

Initialize and configure an autoloader

Autoloader constructors should optionally receive configuration options. Typically, if received, these will be passed to the setOptions() method to process.

setOptions ( $options )

Configure the autoloader state

Used to configure the autoloader. Typically, it should expect either an array or a Traversable object, though validation of the options is left to implementation. Additionally, it is recommended that the method return the autoloader instance in order to implement a fluent interface.

autoload ( $classname )

Attempt to resolve a class name to the file defining it

This method should be used to resolve a class name to the file defining it. When a positive match is found, return the class name; otherwise, return a boolean false.

register

Register the autoloader with the SPL autoloader

Should be used to register the autoloader instance with spl_autoload_register(). Invariably, the method should look like the following:

  1. public function register()
  2. {
  3.     spl_autoload_register(array($this, 'autoload'));
  4. }

Examples

Please see the Quick Start for a complete example.

Copyright

© 2006-2021 by Zend by Perforce. Made with by awesome contributors.

This website is built using zend-expressive and it runs on PHP 7.

Contacts