我是PHP5 / OOP的新手,无法真正了解以下代码的工作原理。在研究__autoload() - 函数时,在PHP.net文档中找到它。
我怎么称呼这个? new MyClass1();
或autoloader::model('myModel');
?
class autoloader {
public static $loader;
public static function init()
{
if (self::$loader == NULL)
self::$loader = new self();
return self::$loader;
}
public function __construct()
{
spl_autoload_register(array($this,'model'));
spl_autoload_register(array($this,'helper'));
spl_autoload_register(array($this,'controller'));
spl_autoload_register(array($this,'library'));
}
public function library($class)
{
set_include_path(get_include_path().PATH_SEPARATOR.'/lib/');
spl_autoload_extensions('.library.php');
spl_autoload($class);
}
public function controller($class)
{
$class = preg_replace('/_controller$/ui','',$class);
set_include_path(get_include_path().PATH_SEPARATOR.'/controller/');
spl_autoload_extensions('.controller.php');
spl_autoload($class);
}
public function model($class)
{
$class = preg_replace('/_model$/ui','',$class);
set_include_path( dirname(__FILE__) . PATH_SEPARATOR.'/model/');
spl_autoload_extensions('.model.php');
spl_autoload($class);
}
public function helper($class)
{
$class = preg_replace('/_helper$/ui','',$class);
set_include_path(get_include_path().PATH_SEPARATOR.'/helper/');
spl_autoload_extensions('.helper.php');
spl_autoload($class);
}
}
答案 0 :(得分:1)
$autoloader = autoloader::init();
这将为您提供自动加载器实例。这个班级想成为一个单身人士。
所有__autoloader都是php最后一次尝试找到尚未包含的类。如果你有一个好的命名/目录结构,你不必担心包含/要求你自己的任何类......自动加载器会为你做。
如果你想调用模型函数:
$autoloader->model('Model');
这将在从上面调用静态init()函数后完成。