Недавно столкнулся со следующей проблемой: при создании объекта класса модели или вызове методов описанных в модели возникала ошибка, которая полностью роняла приложение на пол.
Причина этого явления была в том, что конструктор не мог создать объект класса.
[php] $userModel = new Default_Model_User();
$userModel->getUserByName($name);
[/php] Если Вы используете модули (module) и ваше приложение имеет схожую структуру
[raw] application/
configs/
application.ini
layouts/
modules/
default/
controllers/
models/
views/
Bootstrap.php
Bootstrap.php
library/
public/
tests/
[/raw]
Тогда достаточно добавить в 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),
)));
return $autoloader;
}
[/php]
Bootstrap’у монжо конфиг скормить.
[php]$this->setConfig($config);[/php]
А в конфиге что-то вроде:
[php]
$config = array (
‘paths’ => array(
‘library’ => APPLICATION_PATH.’/../library/’,
‘layouts’ => APPLICATION_PATH.’/layouts/scripts/’,
‘views’ => APPLICATION_PATH.’/views/’,
‘configs’ => APPLICATION_PATH.’/configs/’,
‘models’ => APPLICATION_PATH.’/models/’,
‘controllers’ => APPLICATION_PATH.’/controllers/’,
‘gallery’ => GALLERY_PATH,
‘forum’ => FORUM_PATH),
‘bootstrap’ => array(
‘path’ =>APPLICATION_PATH.’/Bootstrap.php’,
‘class’ =>’Bootstrap’),
‘debug’ => array (
‘on’ => true),
‘db’ => array (
‘adapter’ => ‘PDO_MYSQL’,
‘params’ => array(
‘host’ => ‘127.0.0.1’,
‘username’ => ‘root’,
‘password’ => ‘root’,
‘dbname’ => ‘lol’,
‘driver_options’=> array(PDO::MYSQL_ATTR_INIT_COMMAND => ‘SET NAMES UTF8’),
‘profiler’ => false,
),
),
);
[/php]
Тут все настройки сразу.
В ‘paths’ мы как раз путь до моделей задаём.
Согласен, можно. Даже нужно. Можно даже сравнить насколько приложении быстрее работать станет.
Просто странно.
Вроде как даже в офф. туториале используются настройки)
Да, в офф. мануале стараются побольше хранить в application.ini.
ZF платформенный?)))) Я не знал, что ZF внезапно стал исполняемой программой, а не скриптом для PHP. Давно это случилось?
Ну начнем с того, что ZF — это фреймворк, а не скрипт. Фреймворки, пишутся не только на PHP, но и на Java, C++ и других языках, что может потребовать определенных библиотек.
Вот Вам ссылочка http://ru.wikipedia.org/wiki/Zend_Framework.
Теперь будете знать.
Stafox, Вы серьезно? Я даже не знаю с каких основ Вам начать объяснять.
Для начала разберитесь что такое фреймворк, а что такое скрипт.
Мультиплатформенным может быть приложение, ПРОГРАММА. В конкретном случае такой программой является интерпретатор PHP (в Windows это php.exe, чтобы вам было понятнее). Без этой программы, ваш код — все лишь набор текста.
Вот эта программа и является мультиплатформенной, она работает и под Windows и под Linux.
То что вы пишите (и тот же ZF) — называется скриптом (от слова script — сценарий), это сценарий работы для программы PHP.
Чувствуете разницу между программой и сценарием для программы?
Так-то на Java когда пишешь, тоже без виртуалки не запустишь. Ну а в целом да, у php кросплатформенный интерпретатор, сами же скрипты — просто набор символов)
Не надо мне ничего объяснять. Мы смотрим с вами на одни и те же вещи, с разных сторон. И при этом Вы пытаетесь умничать.
Для интерпретатора — да.
Но! Если смотреть на это со стороны языка программирования PHP (а не интерпретатора), то ZF — это фреймворк (ПО, которое облегчает процесс разработки, и совмещает в себе большое количество различных компонентов). А ПО которое работает более чем на одной ОС является кроссплатформенным. Следуя всем законам логики, делаем вывод: ZF кроссплатформенный.
Вот и все. Я прекрасно понимаю Вашу точку зрения, но прошу учесть и мою.
Благодаря этим комментариям читатели разберуться с понятием кроссплатформенности. Спасибо.
Вы можете найти хоть один не кроссплатформенный фреймовк для php?
О таковых мне не известно.