0

아주 간단한 MVC를 다운로드했으며, 내가 좋아하는 방식으로 변환 중입니다.마법 메서드, 전역 배열 또는 ..이있는 클래스?

index.php 진입 점 파일에서 레지스터 객체 (아래의 클래스 코드)가 인스턴스화되고 MVC 아키텍처에서 전역으로 액세스 할 수있는 템플릿 및 라우터 객체가 전달됩니다.

대신 전역 배열을 사용하는 것과의 차이점은 무엇입니까? 그게 더 간단하지 않아? 아니면 이것을 처리하는 더 좋은 방법이 있습니까?

나는이 개체를 전달하는 더 좋은 방법이 무엇인지 찾고 있습니다.

나는 마술 방법이 좋지 않다는 것을 읽었습니다. 왜냐하면 디버깅하기가 쉽지 않고 다시 요소 화하기가 어렵 기 때문입니다. 그러나 나는 글로벌 어레이에 관해 비슷한 것들을 읽었다.

Class Registry { 
    private $vars = array(); 

    public function __set($index, $value) { 
     $this->vars[$index] = $value; 
    } 

    public function __get($index) { 
     return $this->vars[$index]; 
    } 
} 
+0

클래스로 작업하려면 다음과 같은 코드를 사용하십시오. http://stackoverflow.com/questions/23214438/converting-arrays-to-objects-to-automate-array-key-exists/23215169# 23215169 – Dinistro

답변

1

질문 단지에 대해이 ",이 배열보다 더 나은 무엇이 Registry 클래스의 무엇입니까?" 다음 :이 클래스는 배열 주위의 래퍼 일뿐입니다. 쓸모가 없습니다. IMO는 누군가가 배열 대신 클래스를 사용하면 코드 객체가 자동으로 방향을 잡는다고 생각하기 때문입니다 (잘못된 것입니다). 또는 어쩌면 그/그녀는 그 목적을 명확하게하기 위해 배열에 멋진 이름을주고 싶었을 것입니다 (레지스트리).

원하는 경우 클래스를 삭제하고 배열을 사용할 수 있습니다. 원하는 경우 아무 것도 풀지 않을 수 있습니다.

더 잘하고 싶다면 의존성 주입 및 DI 컨테이너 ("레지스트리"패턴 == 전역 배열의 대체 패턴)에 대해 배우기 시작할 수 있습니다.

관련 문제