2010-01-17 6 views
5

PHP 배열 대 PHP 상수?

배열에 저장된 50 개의 다른 설정 변수가

$config['facebook_api_secret'] = 'value here'; 

또는 50 개의 다른 설정 변수가 상수로 저장되었습니다. 이처럼

define('facebook_api_secret', 'value here'); 

답변

11

처럼 나는 이것이 마이크로 최적화 존재의 영역에서 생각합니다. 즉, 차이는 성능면에서 다른 솔루션보다 한 솔루션을 사용할 가치가 없을만큼 작습니다. 성능이 앱의 핵심 요소라면 PHP를 사용하지 않을 것입니다! :-)

더 편리하거나 더 이해하기 쉬운 것을 사용하십시오. 구성 파일을로드 한 후에 변경해서는 안되기 때문에 구성 데이터를 상수로 저장합니다. 상수는 그 데이터를위한 것입니다.

+0

나는 똑같은 것을 성취 할 수 있기 때문에 1이 더 좋았을 때 나는 볼 것이라고 생각했습니다. – JasonDavis

+1

또 다른 방법으로는 상수가 스마트 에디터 나 IDE가 코드 완성을 할 수 있어야한다는 점입니다. 그러나 코드 완성은 구성 배열의 문자열 키에는 작동하지 않습니다. –

1

다른 코딩 기술/영리한 프로그래밍 트릭을 사용하여 50 가지 변수의 성능을 향상시키는 것은 PHP에서 일하는 잘못된 방법입니다. 항상 기억하십시오 : 옵티마이 저는보다 더 똑똑합니다.

1

이 중 하나에 대한 성능 향상 효과는 나타나지 않습니다. 진짜 질문은 더 유용하다는 것입니다.

한 번 정의되었으며 변경해서는 안되며 모든 곳에서 액세스 할 수 있어야하는 스칼라 값 (문자열, 정수 등)의 경우 상수를 사용해야합니다. 복잡한 중첩 된 구성의 어떤 종류의, 예를 들면있는 경우

는 :

$config->facebook->apikey = 'secret_key'; 
$config->facebook->url = 'http://www.facebook.com'; 

당신은 배열이나 거기에 많은 프레임 워크 중 하나가 제공하는 구성 API를 사용할 수 있습니다 (Zend_Config을 나쁘지 않다)

+0

상수는 구성 클래스보다 훨씬 빠릅니다. 구조체와 상수 vs 클래스가없는 getters()가 없습니다. 그들은 꽤 보이지 않는데 :) – gus

+0

FYI : 깨진 링크 – James

3

제 비공식 테스트에서 실제로 액세스/정의 상수가 일반 변수/배열보다 약간 느리다는 사실을 발견했습니다.

어쨌든 다른 것을 만들지는 않을 것입니다. 당신이 이것들로하는 일은 천분의 일초에 일어날 것입니다.

DB (색인 생성, 검색어 확인을 위해 색인 생성) 및 서버 설정 (APC 사용)을 최적화하면 장기적으로 차이가 날 것입니다.