2009-07-30 2 views
1

библиотеки классов Я довольно новыми для программирования OO ...Динамически здания/загрузки в PHP

Я здание, что в конечном итоге оказаться большая библиотека классов, которые будут использоваться на протяжении всего моего сайта. Ясно, что загрузка всей библиотеки на каждую страницу - пустая трата времени и энергии ...

Так что мне бы хотелось, чтобы на каждой странице был нужен один файл конфигурации «config» php и иметь возможность «звонить» «или« загружать »другие классы по мере необходимости, тем самым расширяя мой класс в соответствии с моими потребностями.

Из того, что я знаю, я не могу использовать функцию в классе конфигурации, чтобы просто включать() другие файлы из-за проблем с областью.

Какие у меня варианты? Как разработчики обычно справляются с этой проблемой, и что является наиболее стабильным?

ответ

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; 
    } 
} 
+0

есть учебник в любом месте, который дает полезные советы по созданию библиотеки классов? – johnnietheblack

+0

Я добавил пример объекта factory. – matpie