Tag: spl autoload register

高效的PHP自动加载和命名策略

和大多数networking开发人员一样,我现在非常享受固体MVC架构的好处。 使用PHP进行MVC时,自动加载显然非常方便。 我已经成为spl_autoload_register的粉丝,只是简单地定义一个__autoload()函数,因为如果您将不同的基本模块(每个模块都使用自己的自动加载)合并在一起,这显然更加灵活。 不过,我从来没有感觉到我写的加载函数。 它们涉及大量的string检查和目录扫描,以查找可能的类加载。 例如,假设我有一个基本path定义为PATH_APP的应用程序,以及一个带有名为models , views和controllers目录的简单结构。 我经常使用一个命名结构,在相应的目录下文件被命名为IndexView.php和IndexController.php ,默认情况下,模型通常没有特定的scheme。 我可能有这样的结构的加载函数,这是获得注册与spl_autoload_register : public function MVCLoader($class) { if (file_exists(PATH_APP.'/models/'.$class.'.php')) { require_once(PATH_APP.'/models/'.$class.'.php'); return true; } else if (strpos($class,'View') !== false) { if (file_exists(PATH_APP.'/views/'.$class.'.php')) { require_once(PATH_APP.'/views/'.$class.'.php'); return true; } } else if (strpos($class,'Controller') !== false) { if (file_exists(PATH_APP.'/controllers/'.$class.'.php')) { require_once(PATH_APP.'/controllers/'.$class.'.php'); return true; } } return false; } 如果在此之后没有find,我可能有另一个function来扫描模型目录中的子目录。 […]