私の PHP ライブラリには、いくつかの静的ファクトリ パターンがあります。ただし、メモリ フットプリントが手に負えなくなってきており、実行時に必要なファイルの数を減らしたいと考えています。以下は、現在の状況の例です。
require_once('Car.php');
require_once('Truck.php');
abstract class Auto
{
// ... some stuff ...
public static function Create($type)
{
switch ($type) {
case 'Truck':
return new Truck();
break;
case 'Car':
default:
return new Car();
break;
}
}
}
Car.php と Truck.php のどちらか一方のみが必要な場合でも、含める必要があるため、これは望ましくありません。私の知る限り、require/include とその ..._once バリエーションには、呼び出しと同じスコープのライブラリが含まれています。これは本当ですか?
もしそうなら、これはメモリリークにつながると思います:
abstract class Auto
{
// ... some stuff ...
public static function Create($type)
{
switch ($type) {
case 'Truck':
require_once('Truck.php');
return new Truck();
break;
case 'Car':
default:
require_once('Car.php');
return new Car();
break;
}
}
}
2 番目の例では、require_once フレーバーが使用されていても、呼び出しのスコープのために、Create() への複数の呼び出しが複数の require につながるように見えます。
これは本当ですか?これらの例でライブラリをphpに動的に含める最良の方法は何ですか?
ありがとう!