2012-04-19 3 views
0

전 전역 변수를 하나만 줄였습니다. 단 하나의 변수와 getter 함수를 가진 클래스를 삽입하는 것은 좀 이상하지만, 암묵적인 의존성을 원하지 않는다. 나는 그것들을 모두 명시 적으로 문서화하기를 원한다. 또한 나는 접근 할 수있는 클래스에 액세스 할 수있는 "전역"만 원한다. 그래서 어느 의미에서 그들은 세계가 아닙니다. 공유 이름을 다시 지정해야합니다. LOAD_ON은 여러 클래스에서 필요한 유일한 변수입니다.하나의 "글로벌"변수 - 올바르게 구현됩니까?

SOLID/DRY (반복하지 말 것)/OOP (객체 지향 프로그래밍)를 고수하려고 할 때 "전역"변수를 구현하는 것이 올바른 방법입니다 (모범 사례).

<?php 

class GlobalClass 
{ 
    private $LOAD_ON = 0; 
    public function getLoad() 
    { 
     return $this->LOAD_ON; 
    } 
} 
+0

할이 방법으로 그것을 사용? – Hajo

+0

대답은 올바른 방향임을 지적합니다 -> http://stackoverflow.com/questions/1151341/registry-design-pattern-good-or-bad –

답변

1

'글로벌'이 하나 뿐이므로이를 변경할 필요가없는 경우에는 상수를 사용하는 것이 가장 좋습니다.

define('LOAD_ON', 0); 

는 $ GLOBALS을 사용하여 해결하기 위해 레지스트리 디자인 패턴 같은 것을 사용

if(LOAD_ON === 0){ 
///... 
+0

예, 클래스도 마찬가지입니다. 나는 $ gc = new GlobalClass()를 사용할 수있다. – LHolleman

+0

레지스트리 패턴은 캡슐화를 제공하므로 ... 이제는 Shared(); ... Shared가이 패턴을 구현합니다 ... 0 전역 ... 지나치게 설계된 것처럼 보일 수 있지만 일관성을 위해 그것을 사용하십시오. –