2013-03-25 3 views
1

편의 방법이 모든 곳에서 산재 해 있습니다. 나는 이제 이것들을 두 개의 도우미 클래스로 밀어 넣었고 도우미 클래스를 내 레이어 수퍼 타입의 멤버로 보호했습니다.Zend View에서 보호 된 멤버를 설정할 수 없음

젠드 뷰에 올 때까지 모든 것이 순조롭게 진행되고있었습니다. 내 레이어 슈퍼 타입을 만들기 위해 젠드보기를 확장했지만 나는 protected 멤버를 연결하려고 할 때 그것은 발생 :

젠드보기 예외 : 개인 또는 보호 클래스 멤버를 설정 할 수 없습니다 된다.

왜 그런 회원이 허용되지 않습니까? 어떤 아이디어? 둘째로, 당신은 과거에 그걸 우회 했습니까? 어떻게 된거야? (이 프레임 워크는 보호 된 멤버를 앞에있는 밑줄이 있음을 감지하는 것으로 보입니다.이 경우 약간의 히트 앤 미스가 발생하며 쉽게 빠져 나올 수 있습니다.)

참고 - 나는 그것을 피할 것이라고 말하지 않습니다. 나는 다른 사람들이 과거에 무엇을했는지 알아 내려고 노력하고있다. (이상한 제약으로 보이기 때문이다.)

헬퍼 및 관련 프록시 메소드를 각 수퍼 클래스에 가져 오기 위해 특성을 사용하고 있기 때문에 중요한 점입니다. 저는 View에 대해서만 별도의 특성을 유지하기를 원하지 않습니다. 또는 각 수퍼 클래스의 공개 멤버를 도우미로 삼는 것을 원하지 않습니다.

감사합니다.

답변

1

데이터 캡슐화.

언더 코어 속성은 기본적으로 허용되지 않으므로 개발자가 실수로 프레임 워크의 일부인보기 속성을 덮어 쓸 수 없습니다.

이것은 기본적으로 모든 프레임 워크의보기 속성을 보호하며 개발자는 설정하려는 공용 속성보다 비를 비게 할 수 있습니다.

Zend View의 저자는 (1) 개인 및 보호 클래스 속성을 제어 (및 작성)하고 (2) 공개 속성을 제어한다는 두 가지 사실을 확신 할 수 있습니다. 이것은 논리 데이터 캡슐화 및 유지 보수 가능한 클래스 과부하를 만듭니다.

+0

좋은 설명 Jon, Thanks. –