0

私はそれを行ってきたことに気づきました。使用すると、オブジェクトのプロパティがまだ設定されているようです

object->set($property, $value);

この状況で予想される動作は何ですか?

4

1 に答える 1

1
object->set($property, $value);

set は、ここではオブジェクトのオブジェクトのメソッドにすぎません。おそらく、setter メソッドを指しています。これは 2 つの引数を取り、それをクラス プロパティに渡します。クラスを設定する動作は set メソッドのコードに依存しますが、このメソッドを使用する利点がいくつかあります。

クラスにデータを格納するには 2 つの方法があります。1 つの方法は、値をクラス プロパティに直接割り当てることです。

class Foo {
    public $a;
    public $b;
}

クラスプロパティに値を割り当てる必要がある場合は、好きなようにします。

$object = new Foo();
$object->a = 'hello';
$object->b = 'world';

これで、クラス プロパティ $a には値 h​​ello が含まれ、クラス プロパティ $b には値 world が含まれますが、このアプローチには問題があり、どのタイプのデータを入力する必要があるかをユーザーに伝えることができません。 $a に整数のみを保存する方法はありません。これを克服するために、setter メソッドを使用できます。このメソッドでは、クラス プロパティを protected または private として宣言し、クラス メソッドを介して値を設定します。

class Foo {
    protected $a;
    protected $b;

   public function set($a) {
       //you can validate the data here before assigning.
       $this->a = $a;
   }
}

getter メソッドと setter メソッドについてググるだけで、より多くの情報を得ることができます。

Class Constructor

クラスコンストラクターは、オブジェクトをインスタンス化するときに自動的に呼び出されるメソッドに他なりません。ユーザーに最初にユーザーIDを提供するように強制することにより、オブジェクトをインスタンス化することを検討してください。または、他のメソッドが呼び出される前に、何らかの有用な計算を実行したい場合があります。ここで、クラス コンストラクターの出番です。以下の例を検討してください

class Bar {

    protected $userId;    

    public function __construct($userId) {
        $this->userId = $userId;
        //any more code execution that needs to be done while instantiating the class can be placed here
    }
}

したがって、オブジェクトをインスタンス化するとき

$object = new Bar();

これはエラーになります。userId を指定していないためです。正しい方法はそうです。

$object = new Bar(1);

クラス プロパティ$userIdは、オブジェクトのインスタンス化時に値 1 を保持します。

これがお役に立てば幸いです。

于 2012-05-09T04:38:22.707 に答える