我对OO编程很新......
我正在构建最终将成为我的网站中使用的大型类库。显然,在每个页面上加载整个库是浪费时间和精力......
所以我想要做的是在每个页面上需要一个“config”php类文件,并且能够根据需要“调用”或“加载”其他类 - 从而根据我的需要扩展我的课程。 / p>
据我所知,由于范围问题,我不能在config类中使用函数来简单地包含()其他文件。
我有什么选择?开发人员通常如何处理这个问题,什么是最稳定的?
答案 0 :(得分:3)
您可以使用__autoload()
或创建一个对象工厂,它将在您需要时加载所需的文件。
顺便说一句,如果您的库文件存在范围问题,则应该重构您的布局。大多数库都是可以在任何范围内实例化的类集。
以下是一个非常基本的对象工厂示例。
class ObjectFactory {
protected $LibraryPath;
function __construct($LibraryPath) {
$this->LibraryPath = $LibraryPath;
}
public function NewObject($Name, $Parameters = array()) {
if (!class_exists($Name) && !$this->LoadClass($Name))
die('Library File `'.$this->LibraryPath.'/'.$Name.'.Class.php` not found.');
return new $Name($this, $Parameters);
}
public function LoadClass($Name) {
$File = $this->LibraryPath.'/'.$Name.'.Class.php'; // Make your own structure.
if (file_exists($File))
return include($File);
else return false;
}
}
// All of your library files should have access to the factory
class LibraryFile {
protected $Factory;
function __construct(&$Factory, $Parameters) {
$this->Factory = $Factory;
}
}
答案 1 :(得分:2)
如果您使用的是第三方图书馆的课程,则听起来像autoload和spl_autoload_register。