Joe's simple to use and versatile PHP autoloader.

v2.0.3 2015-02-05 19:08 UTC


By Joe Fallon

Joe's PHP Autoloader is a versatile and easy to use autoloader for PHP 5.3 and greater. It provides the following features:

  • When autoloading a class, all of the include paths are searched automatically.
  • For maximum legacy supprt, non-namespaced classes are allowed.
  • Normal PSR-0 namespaced classes are supported.
  • Underscore namespaced (e.g. like the Zend Framework 1 or PEAR) classes are supported.
  • This autoloader is fast. No recursive directory searches are performed.


The only requirement is PHP > 5.3.0. This is due to the use of namespaces. Additionally, Composer can be helpful.


The easiest way to install Joe's Autoloader is with Composer. Create the following composer.json file and run the php composer.phar install command to install it.

    "require": {
        "joefallon/phpautoloader": "*"


To use Joe's Autoloader, the following initialization steps are needed:

  • Add the base directories where classes can be found to the include path.
  • Call the Autoloader::registerAutoload() method to load the autoloader.
  • Start using classes in your code.
use JoeFallon\Autoloader;

// Define the include paths.
define('BASE_PATH', realpath(dirname(__FILE__) . '/../'));
define('LIB_PATH',  BASE_PATH . '/lib');
define('VEND_PATH', BASE_PATH . '/vendor');

// Set the application include paths for autoloading.
set_include_path(get_include_path() . ':' . LIB_PATH . ':' . BASE_PATH);

// Require the Composer autoloader. Composer will handle its own class autoloading
// using its own autoloader.
require(VEND_PATH . '/autoload.php');

// Initialize Joe's Autoloader. Joe's Autoloader will handle autoloading any classes
// that are not autoloaded using Composer's built-in autoloader.

As long as namespaces are mapped to the folder structure within the directories defined above, then autoloader will have no problems finding and loading the classes.

For example, let's assume we want to load the class Bar that is within the file named Bar.php contained within a folder Foo. Also, let's assume that the class Bar is namespaced \Foo\Bar. This would give a file path of LIB_PATH/Foo/Bar.php. When new Bar(); is executed, the Bar class will be loaded (if is wasn't already).

Here is a visual depiction of the above example:

Joe's Autoloader Example