4

私の質問は、クラスがあると言うことです:

class SomeClass{

    private $someProperty;


    public function __call($name,$arguments){
        echo "Hello World";
}

今私が言うとき:

$object = new SomeClass();
$object->someMethod();

私のクラスの__callメソッドが呼び出されます。

私が言ったら

$object->getSomeProperty();

__callは再び呼び出されますか?もしそうなら、__ getと__setの魔法のメソッドは何のためにありますか?

私が言ったら

$object->someProperty;

次に、__ get($ someProperty)が呼び出されますか?それとも__set($ someProperty)になりますか?

4

2 に答える 2

16

アクセスできないメソッドが呼び出されるたびに呼び出され__callます。

プロパティを読み込もうとするときはいつでも__get呼び出されecho $obj->prop;ます。$var = $obj->prop;

最後に、プロパティに書き込もうとすると、__setマジック メソッドが呼び出されます。

于 2013-01-28T18:23:45.920 に答える
1

__call は再び呼び出されますか?

はい。

もしそうなら、__get と __set マジック メソッドは何のためにあるのでしょうか?

下記参照:

私が言ったら

$object->someProperty;

次に __get($someProperty) が呼び出されますか? それとも __set($someProperty) になりますか?

__get('someProperty')この式は割り当てではないためです。

于 2013-01-28T18:24:04.903 に答える