2011-10-31 3 views
0

여기에 내가 과거에했던 것은다른 네임 스페이스 PHP에서 상수 정의하기

//file: bar.php 
defined('MYC') or define('MYC', 'val1'); 
//file: bootstrap.php 
define('MYC', 'val2'); 

bootstrap.php를 먼저 포함시켜 MYC = 'val2'를 설정합니다.
이제 bar.php는 \ Foo \ Bar 네임 스페이스에 있습니다. 즉,

//file: bar.php 
namespace Foo\Bar; 
defined('MYC') or define('MYC', 'val1'); 
//file: bootstrap.php 
//following doesn't work 
//const \Foo\Bar\MYC = 'val2'; 
//?? what do I do here ?? 
+0

define() 함수는 전역 상수를 정의하기 때문에 네임 스페이스에 관계없이 코드가 계속 작동해야합니다.이 상수는 모든 네임 스페이스에서 볼 수 있습니다. –

+0

고마워, 내가 실험 해 봤는데, 네임 스페이스 Foo \ Bar;에서 조건부'const MYC = 'val1';을 할 수 없다는 것도 알았어. 그래서 shitty_long_namespaced_global_constant_names와 함께 살아야 할 것 같아. ( – Sudhi

+0

define()는 네임 스페이스를 인식하지 못하기 때문에 현재 네임 스페이스에 상수를 만들려면'define (__NAMESPACE__. '\ CONST_IN_NAME_SPACE')'을해야합니다. 그렇지 않으면'const'를 사용할 수 있습니다 – GordonM

답변

1

그냥 define 키를 말할 수는 \ 푸 \ 바 네임 스페이스에 bar.php입니다.

+0

'define()에 의해 정의 된이 상수들은 언제나 전역 네임 스페이스에 상주 하는가? 그렇게 보입니다. 파고 들어가보고 할 수있게 해주세요. – Sudhi

+0

예. 그저 키/값 쌍 –

+0

읽기 : http://www.php.net/manual/en/language.constants.php –

관련 문제