문제

나는 수업을 재구성하는 과정에 있습니다 (아래 참조) - 나는 수업에서 동일한 가시성으로 모든 것을 설정하는 실수를했다고 생각하는 반면, 속성은 실제로 개인이어야하며 대부분의 경우 공개되어야합니다.

속성을 잡기 위해 나는 단지 $ path-> propertyname을 수행하지만 세터/getters를 갖는 것이 더 실용적이라는 것을 알았습니다. 내가 getters를 구현하려면 각 속성마다 하나를 만들어야합니까, 아니면 전체 수업을 위해 하나를 만들 수 있습니까? 예를 들어 컨트롤러 이름을 얻고 싶다고 말합니다 ...

public function getController( ) {
    return $this->controller;
}

그리고 그것은 컨트롤러 사유지를 반환 할 것입니까? 보다 일반적인 getter/setter 또는 하이브리드 방법을 갖는 것이 일반적입니까? 그리고 나를 위해 세트?

클래스 구조는 다음과 같습니다 (단지 속성/방법) :

class urlParser {

    public static $url      = '';
    public static $controller   = '';
    public static $baseController = '';
    public static $urls     = '';
    public static $template     = '';
    public static $captures     = '';
    public static $contentXML   = '';

    function __construct( $urls ) {

        $this->urls = $urls;

        $this->baseController = $urls['default'];

        $this->get_url();
    }

    public function get_url() {
        // sets following properties:
        // url, template, controller, contentXML, baseController
    }
}
도움이 되었습니까?

해결책

당신에게 세터와 getter가있는 것은 무의미합니다.

컨트롤러를 반환하는 것 외에 어떤 일을 해야하는 경우, 설정 후 속성으로 아무것도하지 않으면 세터가 필요하지 않으므로 getter가 필요하지 않습니다.

실제로 getters and setters를 원한다면 모든 속성에 __get 및 __ 세트 마법 방법을 사용할 수 있습니다. 그러나 사건이 위에서 설명한대로 사건이 전혀 무의미합니다.

다른 팁

PHP의 과부하를 살펴보십시오. http://php.net/overload

두 가지 마법 방법이 있습니다 __get() 그리고 __set() 원하는 것을 정확히 할 수 있습니다

PHP 객체는 약간 좋습니다 마법 방법 (혼란스러워 질 수 있기 때문에 모두 사용하지는 않지만). 당신이 찾고있는 것은입니다 __가져 오기() 그리고 __세트(). 데이터 필드를 비공개로 만들도록 선택한 경우에도 모든 코드를 리팩터링해야합니다 (다른 코드에 잘못 액세스 할 수 없도록해야합니다.이 방법으로 수행하는 데 도움이됩니다. 유지하다.

하지만 각 필드에 대한 모든 유효성 검사를 쉽게 볼 수 있기 때문에 일반적으로 각 개인 데이터 필드에 대한 getters and setter를 사용하려고합니다. 또한 저는 PHP 개발자보다 Java 개발자가 더 많습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top