1

ただのアイデア:

例(PHPの場合):名前を設定するには:$ object-> name('name'); 名前を取得するには:$ object-> name();

引数がない場合:メソッドはgetterとして使用され、それ以外の場合はsetterとして使用されます。単純なゲッター/セッター用。愚かな、何でも、多分?

編集:答えをフォローアップする:インターフェイスをできるだけ明示的にしたいので、getとsetはあまり好きではありません。プロパティが少ない場合は、私見もやり過ぎです。そこで、明示的なゲッター/セッターがいくつかあるクラス/オブジェクトに絞り込みたいと思います。

4

3 に答える 3

4

問題は、フォローするのが難しいということです。私はむしろPHP5の__getと__setを使用したいので、変数を取得して設定する方が自然であり、誰もが私が何をしているのかを正確に知っているでしょう。IE:

クラスmyClass
{{

    関数__get($ name)
    {{
       $ this-> array[$name]を返します;
    }
    関数__set($ name、$ value)
    {{
       $ this-> array [$ name] = $ value;
    }
    関数print()
    {{
       echo $ this-> array ['test'];
    }
}
$ obj = new myClass;
$ obj-> test="こんにちは";
echo $ obj-> test; //echosこんにちは。
$ obj-> print(); //echosこんにちは。
于 2009-08-01T00:05:17.467 に答える
2

これは、__ call()マジックメソッドを使用して実行できます。

class Test {
    public function __call($name, array $args) {
        $variable =& $this->$name;
        if(!empty($args)) {
            $variable = $args[0];
        }
        return $variable;
    }
}
于 2009-08-01T00:13:10.590 に答える
1

もちろん、アプリケーションで意味がある場合はそれを行うことができます。そうでない場合は、すでに設定されている標準のゲッター/セッターを使用します。関数は次のようになります。

public function name($val = null)
{
  if (is_null($val))
  {
    return $this->name;
  }
  else
  {
    $this->name = $val;
  }
}
于 2009-08-01T00:05:36.063 に答える