PHP 라이브러리에 정적 팩토리 패턴이 여러 개 있습니다. 그러나 메모리 사용 공간이 부족해지고 실행 시간 동안 필요한 파일 수를 줄이기를 원합니다. Car.php 및 Truck.php도 하나 또는 필요할 수 있습니다 다른 불구하고 포함해야하므로정적 팩토리 패턴을 사용할 때 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;
}
}
}
이것은 바람직하지 않다 : 여기에 우리가 현재있는 곳의 예입니다. 내가 아는 한 require/include와 their ... _ 변형은 라이브러리를 호출 할 때와 동일한 범위에 포함합니다. 사실입니까?
그렇다면, 나는이 메모리 누수로 이어질 것이라고 믿는다
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 플레이버가 사용 되더라도 호출.
사실인가요? PHP와 같은 예제에서 라이브러리를 동적으로 포함시키는 가장 좋은 방법은 무엇입니까?
감사합니다.
로컬로드가 필요하지 않은 구문 설탕을 자동로드합니까? – thesmart
"required"파일에 클래스 정의가 포함되어 있으면 로컬 범위에 문제가 없습니다.PHP는 Java와 같은 "내부 클래스"를 지원하지 않습니다. 모든 클래스는 현재 네임 스페이스의 "최상위 수준"에서 정의됩니다. –