2017-10-15 6 views
0

私はプラグインとテーマ用の独自のwordpressスターターキットを作成します。名前空間が競合しています。異なるディレクトリのために自分自身のspl_autoload_register

私のプロジェクト(wpプラグインとテーマ)でPHPネームスペースを使いたいです。すべてがうまく

私は spl_autoload_register機能を設定します。私のスターターキットに基づいて2つのプロジェクトを作成するまで。この場合、エラー Cannot redeclare class ...が表示されます。

すべてのプラグインとテーマは別々のディレクトリにあります。そしてそのような各フォルダにはspl_autoload_registerの機能を持つ私のスターターキットがあります。

マイ構造:

enter image description here

私は名前の競合を避けるにはどうすればよいですか? 他の誰かが関数を登録した場合どうなりますかspl_autoload_register

答えて

1

名前の競合を避けるにはどうすればよいですか?

namespacesを使用してください。

他の誰かが関数を登録した場合にどうなるでしょうかspl_autoload_register?それが宣言されていないクラスを使用する必要がある

は、インタプリタは、クラスが利用可能になるまで、彼らは登録されたために、1つでspl_autoload_register 1を使用して登録されたオートロード機能を呼び出します。

+0

スターターキットを使うときは、私の新しいプラグインディレクトリで 'git clone'を実行するだけです。次に、config.phpファイルを変更する必要があります。そして、私は新しいプラグインの作業を開始することができます。異なるプラグインに異なる名前空間を使用する必要がある場合は、新しいプラグインごとにすべての名前空間を変更する必要があります。右?もしそうなら、それは便利ではない。多分、私はその仕事について正しくないのですか? – LostDok

+0

名前空間の有無にかかわらず同じ問題があります。ネームスペースが提供するものは、多かれ少なかれオブジェクトのより長い名前です。プロジェクト(またはクラスまたは定数)に同じ名前の関数を2つ持つことはできません。しかし、名前は同じだが異なる名前空間を持つ2つの関数を持つことができます。それ以外の場合、関数に同じ名前を使用すると、PHP(とWP)が他のプラグインと区別してあなたのプラグインの1つを教えてくれると思いますか? – axiac

+0

それから、私は1つの解決策しか見ません。これにより、私のスターターキットは別のプラグインになります。他のプラグインはこのプラグインに依存します。その後、すべてのプラグインでスターターキットのクラスを使用できます。プラグインのクラスには一意の名前空間があります。しかし、それでも私が望むほど便利ではありません:) – LostDok

関連する問題