Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: PoruОтветов: 2

Я хотел использовать такой код в своем проекте 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, который работает, но я думаю, что имена классов неправильные. Он должен быть чище и яснее.

phpnaming-conventionszend-framework

Ответы

Ответ 1 · рейтинг 2 · karim79

Я использую 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

Ответ 2 · BRampersad

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы