2011-03-17 3 views
2

가짜 상황 : PHP에서 복잡한 사이트를 실행하고 있으며 많은 전역 변수를 사용합니다.PHP - 전역 변수의 성능 및 메모리 문제

내가 기존의 전역 범위의 변수를 저장할 수 등 $_REQUEST['userInfo'], $_REQUEST['foo']$_REQUEST['bar'] 말하고 이러한 데이터가 요청 자체를 참조로, 적절한 사용 될 요청 범위 (에 다른 일을 많이 넣어).

또는

난 내 대부분의 기능에 global $userInfo, $foo, $bar; 같은 라인을 계속 사용할 수 있습니다.

성능에 문제가 있거나 두 솔루션의 메모리 사용량이 다릅니 까?

하나는 입력하기가 쉽기 때문에 ... 모범 사례 지침이 있습니까?

+0

죄송합니다. 이런 종류의 질문에 대해 질문해야한다고 생각하십니까? – changokun

답변

8

귀하의 전역 변수는 $GLOBALS['foo'], $GLOBALS['bar'] 등에서 이미 액세스 할 수 있습니다. 이것은 기능 범위 내에서 global 키워드를 사용하는 것보다 전역 범위에서 더 명확하게 나타냅니다. 의미있는 방식으로 성능에 영향을 미치지 않아야합니다.

많은 사람들이 전역 변수를 사용하지 않고 대신 함수 호출과 객체 생성자를 통해 변수를 전달하는 것이 가장 좋습니다.

+0

멋진데, 나는 $ GLOBALS [ 'foo']'에서 몇 가지를 지울 수 있다는 것을 알지 못했다. – changokun

+0

실제로 틀렸어. PHP의 substr과 strlen은 참조에 의해 전달 된 변수에 대해 끔찍한 성능을 가지고 있으며, 전역 변수로는 훨씬 더 나쁩니다. (그것은 의미가 없지만 PHP입니다.) –

5

두 가지 모두 매우 나쁩니다. 싱글 톤 또는 정적 클래스를 사용하는 것이 좋습니다.

메모리 사용과 관련하여 눈에 띄는 차이는 없습니다.

+0

싱글 톤은 나에게 새로운 아이디어, 감사합니다 – changokun