2012-09-05 2 views
0

IF 다른 파일에 파일을 포함합니다. 즉 foo.php는 여러 가지 방법으로 "foo"클래스를 포함합니다. 어느 시점에서 PHP는 클래스를 메모리에, 포함 또는 클래스에 넣습니다. 초기화. 여기클래스를로드 할 때, 파일을 포함 할 때 또는 클래스를 시작할 때?

: include ('foo.php');

또는 여기에 예를 들면 다음과 같습니다 $foo = new foo();

을 : 내가 모든 고유 클래스를 포함하지만 메모리 사용의 관점에서 무슨 일이 일어날 지 그 클래스의 1 전화 (50 개) 파일을 포함한다면? 속도? 전반적으로 - 그 행동의 나쁜 점을 설명하십시오.

+1

직접 해보기 : http://php.net/memory_get_usage – Gordon

+0

http://stackoverflow.com/questions/4890825/cost-of-include-in-php – FilmJ

+0

당신이해야 할 일은 첫 문장을 읽습니다. [* 매뉴얼 *] (http://php.net/manual/en/function.include.php) – alfasin

답변

2

include 파일을 만들 때 PHP가 수행하는 모든 작업은 해당 파일을 구문 분석하고 클래스 정의, 절차 선 또는 완전히 주석 처리 된 코드가 포함되어 있는지 여부와 상관없이 현재 파일에있는 해당 행을 includesevaluates. 다시 말해, 라인이 실행 가능하다면 구문 오류를 찾습니다. "포함 된"50 개의 클래스 파일이 모두있는 경우 포함 프로세스가 완료되면 50 개의 클래스가 모두 정의 된 단일 파일이있는 것과 유사하게됩니다. 단일 클래스 또는 여러 클래스를 인스턴스화하는 동작은 동일하게됩니다. 오버 헤드의 유일한 차이는 개별 평가와 50 개 파일의 포함입니다.

<?php 
function __autoload($class_name) { 
    include $class_name . '.php'; 
} 

$first = new FirstClass(); 
$second = new SecondClass(); 
?> 

http://php.net/manual/en/language.oop5.autoload.php : 당신이 다른 클래스와 파일을 많이 사용 사례를 수행 만, 당신이로드 수있는 것들에 근거를 포함 PHP에서 자동로드 기능을 확인해야하는 경우

+0

파일을 지정한 경우 오버 헤드가 제한됩니다. n 포함시켜야하고 그들에게만 한정되어 있습니다. 고마워, 그건 의미가있어. – wickedbadawesome

+0

예, 또한 PHP는 초기화를 위해 클래스 기반 파일을 포함하기위한 특별한 자동로드 기능을 제공합니다. – raidenace

관련 문제