Nano Hash - криптовалюты, майнинг, программирование

Класс, расширяющий Zend_Controller_Action, не найден Zend Tool

Я создал расширение класса Zend_Controller_Action и добавил несколько пользовательских методов, к которым можно будет получить доступ с любого контроллера и т. Д.

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

Сообщение об ошибке:

Неустранимая ошибка: класс «CMS_Zend_Controller_Action» не найден в ....

Это класс, который расширяет Zend_Controller_Action, и тот, который расширяется другими контроллерами, такими как indexController.

Как сделать класс доступным для обнаружения. Должен ли я включать каждую папку, как мои классы? Зенд делает это? Я так не думаю. Как это сделать?


  • Где в вашем приложении находится CMS_Zend_Controller_Action? Я также рекомендовал бы не включать «Zend» в имена ваших классов - соглашение заключалось бы в использовании вашего собственного пространства имен вместо слова «Zend», а не в дополнение к нему. Так что вместо этого у вас будет CMS_Controller_Action. 19.07.2011
  • @Tim Fountain, я расширяю Zend_Controller_Action, поэтому я предпочел указать и это. А также потому, что у меня тоже есть свой CMS_Controller_Action 19.07.2011
  • Просто подтверждение: мне удалось воспроизвести это с помощью поддержки Netbeans + Zend Framework в Windows. Во время отладки я понял, что Zend_Tool не использует механизмы начальной загрузки приложения (по крайней мере, когда я это тестировал). 19.07.2011
  • @madflow, точно. Это может быть проблемой. Как это исправить? 19.07.2011

Ответы:


1

Простой. :-p Если он может найти ваши основные контроллеры, вам просто нужно указать путь к вашим расширенным контроллерам.

http://php.net/manual/en/function.set-include-path.php

set_include_path(path_to_your_extended_classes) в вашем index.php, также известном как файл маршрутов.

19.07.2011
  • Я тоже об этом упомянул в своем вопросе. Я считаю этот вариант очень ограниченным. Потому что тогда мне придется включить все необходимые папки. Если мне придется пойти по этому пути, я хотел бы знать, есть ли способ, в котором я могу упомянуть, чтобы включить каждую папку в папку. Кстати, что делает Zend framewook, set_include_path для каждой папки библиотеки. 19.07.2011
  • @Starx Он будет рекурсивно искать в папке. так что набор include path a/ также будет включать a/b, a/b/c, _4 _... и т.д .. Попробуйте. Это займет меньше нескольких минут. 19.07.2011
  • В этом случае в эту папку уже включена set_include_path(implode(PATH_SEPARATOR, array( realpath(APPLICATION_PATH . '/../library'), get_include_path(), ))); вся библиотека, включая CMS и Zend. 19.07.2011
  • @Starx, почему после get_include_path () _ 1_ стоит запятая? 19.07.2011
  • Массив поддерживает дополнительную команду в конце. Проверьте это 19.07.2011
  • @Starx он все еще не может найти ваши расширенные контроллеры? Есть ли у вас контроллеры в пути включения? 19.07.2011
  • Если то, что вы сказали о a/ will also include a/b, a/b/c, правда, то да, должно. Но это не так .... 19.07.2011
  • Я больше не использую Zend_Tool, но помню, что есть конфигурационный ini-файл. Вы пробовали добавить пространство имен, как в application.ini? Плюс есть эта константа ZF_STORAGE_DIR 19.07.2011
  • @Starx у вас есть настройка .htaccess? для маршрутизации в ваш файл index.php. 19.07.2011
  • @Adrian, не в config.ini а пространство имён настраивается из бутстрапа. 19.07.2011
  • @FinalForm, да, у меня есть файл .htaccess для перенаправления на мой index.php. Это файл .htaccess по умолчанию, который входит в состав zend framework. 19.07.2011

  • 2

    Я думаю, что то, что вы пытаетесь здесь сделать, - это не то, о чем Zend_Tool.

    Насколько я понимаю ваш вопрос и настройку, вы создали класс в своей библиотеке. Конечно, вы можете расширить Zend_Controller_Action множеством ваших собственных классов в вашей собственной библиотеке / библиотеках (я тоже так делаю). Добавление действия к такому классу может быть необычным, но проблема для Zend_Tool по одной конкретной причине.

    Zend_Tool, как мне кажется, касается только хорошо известных структур вроде /application и того же самого, что находится внутри /modules. Если вы создадите класс контроллера, Zend_Tool выполнит за вас некоторую работу, например, добавит необходимую структуру папок в вашу папку /application или /modules. То же самое с методом действия, который требует просмотра файлов. Наличие класса контроллера в вашей библиотеке не требует (не должно) всего этого и, следовательно, не встроено в Zend_Tool. Я думаю, что какой бы класс вы ни создавали в своей библиотеке, Zend_Tool не поддерживает.

    20.07.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..