Переместил проект Zend Framework в Ubuntu и он перестал работать - PullRequest
0 голосов
/ 17 января 2011

У меня есть проект Zend Framework, над которым я начал работать еще в Windows.Он работал на Zend Server CE и все работало нормально.Перемещение между компьютерами Windows не было проблемой вообще.Но теперь я хотел поместить его на Ubuntu Server, все еще используя Zend Server CE.Но он начал жаловаться на отсутствующие плагины контроллера.Но они были расположены в «правильном» месте.Я полагаю, что автозагрузчик как-то запутался.

Такое ощущение, что Windows должна использовать имена без учета регистра для папок и файлов, которые являются причиной.Какие папки нужны Zend Framework в правильном случае?Глядя на стандартную компоновку проекта используются строчные имена для папок.Но, глядя на сам Zend Framework, используются только заглавные буквы.Возможно, вместе с тем фактом, что автозагрузчик Zend Framework принимает имена классов в единственном числе, например, имя папки

Form_Foo находится в forms/Foo.php

В моем проекте основная частьВ проекте используется стандартный стиль строчных букв.

т.е.

application
  modules
    default
      controllers
      views
      models
      forms
      plugins
        controller
          acl
            Plugin.php  -- The class Plugin_Controller_Acl_Plugin in this file is not found on Linux
    foo
      controlles
      views
      models
      forms

Но затем в папке моей библиотеки есть папка Core, в которой у меня есть классы Core, а в тех, которые я использую, Zend Frameworkприсвоение им имен

library
  Core
    Model
      User.php -- Contains the class Core_Model_User

Быстрые тесты показывают, что Zend Framework может найти эти классы очень хорошо.

Когда в Zend Framework в Linux вы должны использовать правильные имена падежейдля автозагрузки работать?Если кто-то выберет первые прописные имена, например,

Application
  Modules
    Default
      Controllers
      Views
      ...

Любые идеи и советы приветствуются.

1 Ответ

2 голосов
/ 18 января 2011

Является ли Plugin_Controller_Acl_Plugin единственным классом, который не может быть загружен?Если это так, вы должны попробовать использовать верхний регистр для каждого каталога внутри плагинов (например, plugins / Controller / Acl), поскольку автозагрузчик связывает только часть «Plugin_» пространства имен с каталогом «plugins», остальные будут загружены так же, какдругие классы (остаются имена каталогов в верхнем регистре, только подчеркивания будут преобразованы в разделитель каталогов).Посмотрите на Zend_Application_Module_Autoloader для настроек по умолчанию, вы должны использовать имена каталогов в верхнем регистре в каталогах, перечисленных там (формы, плагины и т. Д.).

...