2010-05-30 7 views
3

내 시스템의 다른 클래스와 친구가 되려면 몇 가지 클래스가 필요합니다. 이 기능이 없기 때문에 공개해서는 안되는 몇 가지 방법을 홍보 할 수있었습니다. 그 결과로 우리 팀원들은 코드를 엉망으로 만드는 못된 방식으로 코드를 구현합니다.PHP에서 우정을 에뮬레이트하는 간단한 방법이 있나요 5.3

PHP 5.3에서 우정을 정의하는 방법이 있습니까?

(나는 간단한 해결책이 없다면 http://bugs.php.net/bug.php?id=34044에 투표하고 싶을 것입니다.)

+1

-insert "no friends"pun here- – Matchu

답변

0

간단히 말해서, 아니요. 일반적으로 받아 들여지는 접근 방식은 팀에 대해 귀하의 도서관에 맞서 개발할 방법을 교육 시키거나 재 설계하는 것입니다. 첫 번째 해결책은 Phpdoc을 사용하여 문서를 만들고 @visibility를 사용하여 docbloc 주석의 가시성을 설정하고 클래스를 실제로 문서화함으로써 매우 쉽게 수행 할 수 있습니다. 두 번째는 조금 더 자세히 알지 못해도 의견을 말할 수 없습니다.

/** 
* Some helper class for LibraryInterface 
* 
* ATTENTION! 
* This class should not be used outside this package. 
* 
* @visibility package 
* @package mypackage 
*/ 
class Helper 
{ 
    public function doStuff() 
    { 
    /* does stuff */ 
    } 
} 

/** 
* Class for accessing some part of the library. 
* 
* @visibility public 
* @package mypackage 
*/ 
class LibraryInterface 
{ 
    public function doStuff() 
    { 
    $this->helper->doStuff(); 
    } 
} 
+0

사람들을 교육하는 것은 생각만큼 쉽지 않습니다. (그리고/또는 나는 교육에 재능이 없습니다.) 게다가, 코드를 사용하는 방법에 대해 팀 구성원을 "교육하는 것"은 우리가 액세스 할 수있는 주요 이유 중 하나입니다 IMHO. –

-1

"친구"가 무슨 뜻인지 잘 모르겠습니다. 새로운 클래스가 그 클래스를 "구현"할 수있는 추상 클래스를 사용할 수 있습니다. 또는 클래스가 다른 클래스를 확장하도록하고 메소드, 변수 등을 공개 또는 비공개와 반대로 "보호"할 수 있습니다.

팀이 "좋지 않은 방식으로"코드를 구현하면 더 큰 문제가 발생할 수 있습니다.

+1

예 : C++ 클래스는 비 멤버 함수/클래스를 친구로 표시하여 해당 클래스의 멤버와 동일한 액세스 권한을 부여 할 수 있습니다. 즉, 친구 함수/메소드는 클래스의 보호 된/개인 멤버에 액세스 할 수 있습니다. – VolkerK

+0

미안하지만, 내 질문을 완전히 놓쳤습니다. OOP에서 "친구"는 공개, 보호, 개인 같은 추상/디자인 패턴이 아닌 액세스 수준입니다. –

+0

완전히 빠졌습니다!? 당신은 당신 자신이 방금 "친구"는 공공, 보호, 사적인 것과 같다고 말했습니다. PHP! = Full OOP –

관련 문제