Zend_Framework — именование классов

Я хотел использовать такой код в своем проекте Zend Framework:

public function indexAction() {
    $user = new User();
    $user->name = "Guest";
    $user->save();
}

Главное, что для меня важно, это то, что класс называется просто User, а не App_Model_User, но как я мог это сделать? Я подумал, что могу добавить путь к файлу User.php в папке с моделью в include_path:

<?php
class User {
    /* Some code */
}

Но как мне настроить автозагрузчик для загрузки этого файла/класса? В настоящее время я использую автозагрузчик с пространством имен приложений («Приложение») для загрузки классов с именем App_Model_User, который работает, но я думаю, что имена классов неправильные. Он должен быть чище и яснее.


person Poru    schedule 07.11.2010    source источник


Ответы (2)


Я использую set_include_path следующим образом:

$root = dirname(dirname(__FILE__));

set_include_path(
    $root . '/application' . PATH_SEPARATOR
    . $root . '/library' . PATH_SEPARATOR 
    . $root . '/application/models' . PATH_SEPARATOR
    . $root . get_include_path()
);

Дальше автозагрузчик подхватывает любые модели (с любым названием), которые я кладу в /application/models. Вышеизложенное находится в моем единственном общедоступном скрипте (index.php). Вот как я настроил автозагрузчик:

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

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

http://framework.zend.com/manual/en/zend.loader.autoloader.html

person karim79    schedule 07.11.2010
comment
Я попробовал то же самое, но потом мне пришлось написать require 'User.php, что это работает, но как я могу настроить автозагрузчик Zend Framework, чтобы он делал это автоматически? PS: начиная с PHP 5.3 dirname(__FILE__) можно было заменить на __DIR__ - person Poru; 07.11.2010
comment
Только что обнаружил это решение, а затем увидел ваше редактирование, но все равно спасибо;)! Теперь это работает! - person Poru; 07.11.2010

Какая у вас версия PHP? Вы можете использовать пространства имен.

person BRampersad    schedule 07.11.2010
comment
Система DEV: › 5.3, но у меня на сервере 5.2.x :( - person Poru; 07.11.2010