2011-11-08 8 views
1

これはシナリオです(これは少し特殊ですが、まだ一般的なPHPライブラリにも適用できます):実用的なPHP名前空間ソリューションには何がありますか?

WordPress 3.2.1以前のバージョン(PHPコードベース、PHP5のw/)...私はいくつかのクラス名(WPAlchemy_MetaBox、WPAlchemy_MediaAccess)を持つ小さなPHPライブラリを作成しました...開発者は、WordPressが(同じ環境で)多くインストールされているプラ​​グイン/テーマのクラスを使い始めました。ライブラリを使用している2つ以上のプラグインの可能性があります(クラス名と明らかに衝突が起こる可能性があります)

私は現在、各リリースでバージョン番号などの独自のクラス名を持つことができると考えています...私はこれを少し抽象化することができました何らかのシンプルなローダー(単純化のため)。

私は上記を解決するためのいくつかのベストプラクティスを取得したいと思います。

  • は、この問題を解決する他のSOの記事がある場合はさらに質問を言い替えること自由に感じなさい、私に知らせてください

を必要に応じて、開発者が特定のバージョンを使用することを可能に

  • 名前の衝突を防ぎます追加の箇条書きの目的があります。

  • 答えて

    0

    衝突を防ぐため、オートローダーを使用してください(spl_autoload_registerを参照)。したがって、ライブラリを共有して各共有者がオートローダーを使用する場合、クラス名の衝突(クラスの再宣言クラスの致命的なエラー)はもう発生しません。

    これはバージョンの問題を解決するものではありません(たとえば、同じファミリの異なるクラスを異なるバージョンで使用するなど)。

    1つの簡単な解決策(オートローダーと組み合わせる)は、ライブラリをプラグインとして提供することです。ライブラリが更新されるたびに、プラグインを更新します。プラグインはオートローダーとクラスだけを提供します。

    ライブラリを使用したい他のプラグインは、ライブラリプラグインを依存関係にする必要があります。それをチェックし、利用できない場合にインストールするようにユーザーに指示するか、または自動的にインストールするだけです。

    デモ(SDK)用にこれを行うサンプルプラグインを提供している場合、私は多くのライブラリユーザーが採用すると思います。

    関連する問題