この質問は一部の人には明らかかもしれませんが、私はWebアプリケーション、特にPHPを使用して多層アーキテクチャの表面をかじり始めたばかりです。私はいくつかのオブジェクトを含むライブラリを持っています、そしてそれは急速に拡大しています。私は常に再利用性の観点から考え、プロジェクトを小さく、再利用可能で、ゆるく結合されたコンポーネントに分割して、プロジェクトを作成するだけでなく、将来のプロジェクトのパーツも作成するようにしています。オブジェクトのincludeステートメント内で絶対パスの使用を停止できるように、一種のパッケージ管理システムを設計しようとしています。ライブラリ内のすべてのクラスファイルにインクルードを含む単一のファイルが必要です。インクルードとともに、「シングルトン」のクラスを追加したい ライブラリにあるすべてのオブジェクトのインスタンスをオンデマンドで取得できるようにするパターン。新しいインスタンスへの参照を返すオブジェクトごとに静的ゲッターを作成する予定です。基本的に、このようなもの...
include('classa.php');
include('classb.php');
include('classc.php');
class pacman{
private static $instance_stack;
public static function GetPackage($strPackage){
if(!self::$instance_stack){
self::$instance_stack['classa']=new ClassA();
self::$instance_stack['classb']=new ClassB();
self::$instance_stack['classc']=new ClassC();
}
if(array_key_exists(strtolower($strPackage),self::$instance_stack)){
return self::$instance_stack[strtolower($strPackage)];
}
else{
return false;
}
}
}
それならクラスを取得したいのなら...
include('pacman.php');
$ClassA = pacman::GetPackage('classa');
これは非常に初歩的な実装だと思います。私の例は最低限をカバーしています。私の問題はこれを実装することではありません。むしろ、インクルードからの何百ものインスタンス化されていないクラスがパフォーマンスに顕著な影響を与えるかどうかの問題です。もしそうなら、誰かが回避策を知っていますか?コンテンツごとにディレクターに分類された何百ものクラスの相対パスを追跡するのがどれほど難しいかはわかりません。