私は単純化されたMVC型構造であるPHPのアプリケーションを持っています。このアプリケーションは、私の会社などが運営する12以上のサイトで使用されます。構造体は、コントローラファイル、アプリケーションクラスを含むapplicationというフォルダ、templateなどのサイト固有のコードを含むsiteというフォルダから構成されます。定期的に、私たちは変更を配布するときにコントローラとアプリケーションフォルダを更新するパッチを配布します。その結果、クライアントは、コードが更新されたときに変更を失うことなく、アプリケーションフォルダ内のコアコードを実際に変更することはできません。クライアントがクラスをオーバーライドできるようにすることはできますか?
私はクライアントが望むものを説明することができるので、既存のクラスを拡張する必要があることを伝えます。これを可能にする設計パターンはありますか?今、私は、ユーザーがクラス全体を交換する能力を与えている:
spl_autoload_register('loadSiteClass');
spl_autoload_register('loadCoreClass');
これは、クラスのためのアプリケーションフォルダで検索する前に、クラスのためのサイトフォルダをチェックしオートローダを使用しています。クラスを完全に置き換える代わりに、既存のクラスを拡張するクラスを自動的に検出、ロード、および使用できる代替方法を見つけることを望んでいます。どんな提案も大歓迎です。前もって感謝します。
サイトの管理者がクラスの拡張を指示する設定を追加できるサイト固有の設定ファイルもありますが、その情報の使用方法はまだ分かりませんそれが提供された場合。