3

$_listと呼ばれるプライベート属性とパブリックセッターを持つクラス Test があると仮定しましょう。
外部から属性値を設定するにはパブリックセッターを使用します。

class Test {
    private $_list;

    public function getList() {
        return $this->_list;
    }

    public function setList($list) {
        $this->_list = $list;
    }

    public function initialize() {
        $list = array();

        /* ... Some code that fills the $list with values etc. ... */

        // 1) Set value directly
        $this->_list = $list;

        // 2) Use public setter
        $this->setList($list);
    }
}

問題は、クラス内でプライベート属性値を設定するためにパブリック セッターを使用する必要があるかどうかです。
1位と2位、どっちがいい?なぜ?
あなたはどちらの方法を好みますか?それぞれの方法の長所と短所を説明した完全な回答が欲しいです。

ありがとう。

4

1 に答える 1

1

上で書いたように、どちらも許容されますが、正解は次のとおりです。むしろ直接属性アクセスを使用しますが、セッターを使用したほうがよい場合もあります。

ナンバー1、(プロパティアクセス)長所:

  • 読みやすく、わずかに高速
  • これがオブジェクトの単純な属性であるというアプローチを提供します

ナンバー2、(セッター)長所:

  • 属性の設定でカスタム アクションを実行できます (たとえば、他の属性やキャッシュの初期化、パラメーター オブジェクトのメソッドの呼び出しなど)。
  • 属性をクラスのサブ要素として扱い、独自のロジックが実装されている場合があります。

変数を使用する背後にロジックがないことを提案することがより重要だと思います。シンプルな場合は、シンプルに見えるようにします。そうでない場合でも、セッターを使用できます。

ゲッターとプロパティ アクセスについても同じことが言えます。上記も同様に当てはまります。

于 2013-01-08T17:20:34.707 に答える