我的 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;
}
}
}
在我看来,在第二个示例中,即使使用了 require_once 风格,对 Create() 的多次调用也会因为调用的范围而导致多次请求。
这是真的?在诸如此类的示例中,在 php 中动态包含库的最佳方法是什么?
谢谢!