문제

그냥 아이디어 :

예제 (php) : 이름을 설정하려면 : $ object-> name ( 'name'); 이름을 얻으려면 : $ object-> name ();

인수가없는 경우 :이 방법은 getter로 사용됩니다. 간단한 getters/setter 용. 어리석은, 어쩌면?

편집 : 답을 후속하기 : 나는 정말로 마음에 들지 않는다. 얻고 설정하십시오 나는 가능한 한 명백한 인터페이스를 선호하기 때문에. 속성이 몇 개 밖에 없으면 과잉 IMHO입니다. 그래서 나는 몇 개의 명백한 getters/setters가있는 클래스/객체로 좁히고 싶습니다.

도움이 되었습니까?

해결책

물론, 당신은 당신의 응용 프로그램에서 의미가 있다면 그렇게 할 수 있습니다. 그렇지 않으면 나는 당신을 위해 이미 설정된 표준 getters/setter 만 사용합니다. 기능은 다음과 같이 보일 수 있습니다.

public function name($val = null)
{
  if (is_null($val))
  {
    return $this->name;
  }
  else
  {
    $this->name = $val;
  }
}

다른 팁

문제는 따라 가기가 어려울 것입니다. 나는 오히려 php5의 __get과 __set을 사용하여 변수를 얻고 설정하는 것이 더 자연스럽고 모든 사람들은 내가하고있는 일을 정확히 알 것입니다. 즉:

class myClass
{

    function __get($name)
    {
       return $this->array[$name];
    }
    function __set($name, $value)
    {
       $this->array[$name] = $value;
    }
    function print()
    {
       echo $this->array['test'];
    }
}
$obj = new myClass;
$obj->test = "Hi";
echo $obj->test; //echos Hi.
$obj->print(); //echos Hi.

__call () 마법 방법을 사용하여 수행 할 수 있습니다.

class Test {
    public function __call($name, array $args) {
        $variable =& $this->$name;
        if(!empty($args)) {
            $variable = $args[0];
        }
        return $variable;
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top