При разработке своего веб-приложения, Вам наверняка приходилось использовать свои классы. И Вы, скорее всего, уже задавались вопросом «Где же их хранить?», ну а если это и не так, то в ближайшее время Вас наверняка постигнет этот вопрос. Можно их конечно положить в 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]
Если Вам нужна уникальная программа программа под ваши нужды, Вы можете заказать программу у профессионалов, эти ребята знают свое дело: сделают все качественно и в кратчайшие строки.
Очень интересный и полезный пост. Пока с программированием я ещё разбираюсь мало но теперь хоть имею представление что ещё ждёт впереди.Буду знать где искать ответы.
Ну что же, желаю удачи в этом нелегком деле 🙂
Мне в зенде порой эти префиксы не особо по душе.
Поэтому, свои классы именую типо Geo, но в конфиге указываю путь до классов.
Тут, правда, трабл с конфликтом имён может быть с классами из либы. Тогда можно класс назвать MyGeo (:
А мне наоборот нравится, так по имени класса можно определить к какому модулю он относится.