Zend Framework: где хранить свои классы?

Zend Framework
При разработке своего веб-приложения, Вам наверняка приходилось использовать свои классы. И Вы, скорее всего, уже задавались вопросом «Где же их хранить?», ну а если это и не так, то в ближайшее время Вас наверняка постигнет этот вопрос. Можно их конечно положить в controllers и все будет работать, но это как-то не эстетично. Рыба должна лежать отдельно от мяса 🙂

Поэтому я решил хранить их в отдельной директории classes. Ну а для того, чтобы Zend Framework самостоятельно подгрузил наши классы, нужно добавить в Bootstrap.php следующий код.
[php] protected function _initAutoload() {
$this->bootstrap("frontController");
$front = $this->frontController;

$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->setFallbackAutoloader(true);

$modules = $front->getControllerDirectory();
$default = $front->getDefaultModule();

foreach (array_keys($modules) as $module) {
if ($module === $default) {
continue;
}
}
$autoloader->pushAutoloader(new Zend_Application_Module_Autoloader(array(
"namespace" => ucwords($module),
"basePath" => $front->getModuleDirectory($module),
)));
$loader = new Zend_Loader_Autoloader_Resource(array(
‘namespace’ => »,
‘basePath’ => $front->getModuleDirectory($module),
));
$loader->addResourceType(‘classes_type’, ‘classes’, $module.’_Class’);
return $autoloader;
}
[/php]

Хочу обратить ваше внимание на строку
[php]$loader->addResourceType(‘classes_type’, ‘classes’, $module.’_Class’);[/php] Первый аргумент указывает тип Ваших классов.
Второй аргумент — имя директории, в которой они будут располагаться.
Третий — префикс имени класса.

Таким образом Вы подгрузите все классы для текущего модуля.
Ну и небольшой пример класса:
[php title=»application/modules/default/classes/Geo.php»] <?php
class Default_Class_Geo
{
private $radius;
private $coordinatesType;

public function __construct() {
//…
}
public function convertCoordinates($point, $from, $to) {
//…
}
}
[/php]

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

Stas Kuryan

Web developer. Перфекционист в написании кода.

4 комментария

  1. Ольга     

    Очень интересный и полезный пост. Пока с программированием я ещё разбираюсь мало но теперь хоть имею представление что ещё ждёт впереди.Буду знать где искать ответы.

    • Stafox        Автор

      Ну что же, желаю удачи в этом нелегком деле 🙂

  2. Suvitruf     

    Мне в зенде порой эти префиксы не особо по душе.

    Поэтому, свои классы именую типо Geo, но в конфиге указываю путь до классов.

    Тут, правда, трабл с конфликтом имён может быть с классами из либы. Тогда можно класс назвать MyGeo (:

    • Stafox        Автор

      А мне наоборот нравится, так по имени класса можно определить к какому модулю он относится.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *