PHP Autoloader
This is a class for PHP that keeps the user from having to manually include classes by automatically including them on-the-fly as needed.
This simple autoloader class is easy-to-use and features caching so it does not have to scan the file system for a given class more than once (unless the file is moved).
Download
Download PHP Autoloader class or just view the source.
This software is released under the FreeBSD License (revised). (You can use it for free on your personal and commercial projects.)
Installation
Simply include the class and configure it in your top-level/application config:
<?php
require(APP_PATH . 'classes/Autoloader.class.php');
Autoloader::setCacheFilePath(APP_PATH . 'tmp/class_path_cache.txt');
Autoloader::excludeFolderNamesMatchingRegex('/^CVS|\..*$/');
Autoloader::setClassPaths(array(
APP_PATH . 'classes/',
APP_PATH . 'models/'
));
spl_autoload_register(array('Autoloader', 'loadClass'));
The above example assumes there is an APP_PATH constant that points to the root of the application where you might have a classes and tmp directory, among other things.
How It Works
It scans all paths recursively, in the order in which they were given until the class is found. The class is loaded, and the path to the class is saved to the cache file. Next time the class is needed, its path is pulled directly from the cache file. If the class was moved or the cache file was removed, the process starts over for that class.
By default, it looks for files with exact name as the class with the suffix .class.php. For example, if MyClassName is requested, it looks for MyClassName.class.php. The suffix can be changed by calling setClassFileSuffix():
Autoloader::setClassFileSuffix('-my_suffix.php');
Problems?
If you are getting permissions errors for the cache file, make sure the file exists and is writable or the directory is writable (the file is created if it does not exist).