0

私は、Windowsに戻ったときにaaで作業を開始したZendFrameworkプロジェクトを持っています。Zend Server CEで実行され、すべてが正常に機能しました。Windowsマシン間での移動はまったく問題ありませんでした。しかし今は、ZendServerCEを使用したままUbuntuサーバーに配置したいと思いました。しかし、コントローラープラグインの欠落について不平を言い始めました。しかし、それらは「正しい」場所にありました。オートローダーはどういうわけか混乱していると思います。

Windowsが原因となるフォルダやファイルで、大文字と小文字を区別しない名前を使用しているのは事実であると思われます。正しい場合、Zend Frameworkにはどのフォルダーが必要ですか?標準のプロジェクトレイアウトを見ると、フォルダの小文字の名前が使用されています。ただし、Zend Framework自体を見ると、大文字の最初の文字が使用されています。たぶん、ZendFrameworkオートローダーが次のような複数形のフォルダー名で単数形のクラス名を受け入れるという事実と一緒に

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クラスがあり、それらにはZendFrameworkの方法で名前を付けています。

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

クイックテストは、ZendFrameworkがこれらのクラスを適切に見つけることができることを示しているようです。

LinuxのZendFrameworkを使用している場合、自動読み込みを機能させるには、どこで正しいケース名を使用する必要がありますか?のように全体を通して最初の大文字の名前を選ぶ必要があります

Application
  Modules
    Default
      Controllers
      Views
      ...

任意のアイデアやヒントを歓迎します。

4

1 に答える 1

2

「Plugin_Controller_Acl_Plugin」はロードできない唯一のクラスですか?その場合、プラグイン内のすべてのディレクトリ(plugins / Controller / Aclなど)に大文字を使用してみてください。オートローダーは名前空間の「Plugin_」部分のみを「plugins」ディレクトリに関連付けるため、他のディレクトリは同じようにロードされます。他のクラス(大文字のディレクトリ名は残り、アンダースコアのみがディレクトリセパレータに変換されます)。デフォルト設定については、Zend_Application_Module_Autoloaderを参照してください。そこにリストされているディレクトリ(フォーム、プラグインなど)の下に大文字のディレクトリ名を使用する必要があります。

于 2011-01-17T21:08:24.147 に答える