I tried to use the following code to load my classes automatically. spl_autoload_extensions(".php"); // comma-separated list spl_autoload_register(); PHP: It works, but only those classes that are on the same directory. How do I include other classes that are on sub directory?
I prefer namespaces for autoloading. spl_autoload_register(function($namespace) { require str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . '.php'; }); PHP: Class definition: namespace path\to\my; class Classname { } PHP: (Filename path/to/my/Classname.php) Usage: <?php use path\to\my\Classname; // include autoloader $class = new Classname(); PHP:
Autoloading is different for everybody. PHP allows you to instruct the interpreter on how to load classes via a function. In one of my apps I have: public function __construct() { function Auto_Loader($class_name) { $required_file; switch (1) { case (stripos($class_name, "Controller_") !== false): $required_file = PATH_CONTROLLERS . $class_name . ".php"; break; case (stripos($class_name, "Model_") !== false) : $required_file = PATH_MODELS . $class_name . ".php"; break; default: $required_file = PATH_LIBRARY . $class_name . ".php"; break; } require $required_file; } spl_autoload_register("MyFramework\Auto_Loader"); } PHP: My routine allows auto loading for 3 different directories. My Controller, Models, and Library directories. My routine for MY application assumes your class names are also the file name. I write MY classes around this structure. For everything and anything else I set an INC Path and require those classes individually. You could however write some code to include those classes automatically too. Every app is different.
//FROM PHP.NET // we've writen this code where we need function __autoload($classname) { $filename = "./ADD_YOUR_DIRECTORY/". $classname .".php"; include_once($filename); } // we've called a class *** $obj = new myClass(); PHP: