2016-09-12 12 views
-1

私には奇妙なことがあります。それはSymfony Controllerにありますが、私はそれが重要だとは思わない。もちろんPHP/Symfony2、1つのファイルに2つのクラスがあります。

class ExportType 
{ 
    const EXPORT_WORLDWIDE = 1; 
    const EXPORT_EU = 2; 
} 

がトップに1つだけの名前空間があります:コントローラファイルでは、次のコントローラクラスに私はより明確にクエリ内のいくつかのことを保つためにconstsとシンプルな「クラス」を作成しました。これらの定数は、コントローラのアクションの1つで使用されます。

PhpStormのコード自動フォーマットを使用するたびに、そのクラスはファイルの先頭に移動されます。 OK、PhpStormはここでエラーを報告しません。しかし、PHP(またはSymfony?)のように、ヘルパークラスがトップになるたびに、クラスがこの名前空間に存在しないと言ってFileLoaderLoadExceptionが投げられるので、それは気に入らないようです。
下部にあるときは問題ありません。それは普通ですか?使用されたクラスは、それを使用しているクラスの後で宣言する必要がありますか?

+0

愚かな質問:なぜこれらのクラスを他のファイルに移動しないのですか?つまり、それらを同じファイルに保存する利点は何ですか? Secondoばかげた質問:symfonyを使うので、 'parameters.yml'ファイルや環境ファイルを利用してそのような定数を定義するのはなぜですか?こうすることで、すべてのアプリケーションを通じてそれらを取得できます。 – DonCallisto

+1

ヘルパークラスを使用するコントローラメソッドコードの関連部分を表示してください。名前空間の問題がある可能性があります。私はいつもこのようなことをして、問題に気付かなかった。 – Cerad

答えて

2

問題は、おそらくComposerから来ています。あなたはコードがPSR-0/4に準拠していないことに注意してください。これはComposerがファイルを自動読み込みするために使用しています。そのためにロードするファイルが見つからないため、エラーが発生します。

使用している唯一の場所がコントローラ内にあるため、おそらく秒で宣言されている場合に機能します。他の場所で定数を使うと自動的に失敗します。

+0

こういった定数のみのクラスはすべて別のフォルダと名前空間に入れて使用する必要がありますか?それはちょうど1つのファイルからしか使用されていないとあまり意味がないように思えましたが、それはPSR準拠の方法だと思います... – b174008

+0

基本的にはええ。 Composerを使用している場合は、1クラスあたり1ファイルです。関数、定数などを宣言するファイルが必要な場合は、 'composer.json'に' files'指示文を追加する必要があります:https://getcomposer.org/doc/04-schema.md#files –

+0

@Théo1つのファイルに複数のクラスがある場合、psr4も作曲家も気にしません。ファイルを自動ロードすることはできないかもしれませんが、ファイル自体がロードされている限り、すべて正常です。 – Cerad

関連する問題