Волшебные методы php, вызов get и set?


Мой вопрос в том, скажем, у нас есть класс:

class SomeClass{

    private $someProperty;


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

Теперь, когда я говорю:

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

Будет вызван метод __call в моем классе.

Когда я говорю

$object->getSomeProperty();

Будет ли __вызов снова вызван? Если да, то для чего предназначены магические методы __get и __set?

Когда я говорю

$object->someProperty;

Тогда будет ли вызываться __get($SomeProperty)? или это будет __set ($SomeProperty)?

Author: Koray Tugay, 2013-01-28

2 answers

Всякий раз, когда вызывается недоступный метод, будет вызван __call.

В любое время, когда вы пытаетесь прочитать свойство __get, будет вызвано, будь то echo $obj->prop; или $var = $obj->prop;

И, наконец, каждый раз, когда вы пытаетесь записать в свойство, будет вызываться магический метод __set.

 10
Author: Marcus Recck, 2013-01-28 18:31:46

Будет ли __вызов снова вызван?

Да.

Если да, то для чего предназначены магические методы __get и __set?

См. Ниже:

Когда я говорю

$object->someProperty;

Тогда будет ли вызываться __get($SomeProperty)? или это будет __set($SomeProperty)?

__get('someProperty') потому что это выражение не является присваиванием.

 1
Author: Fabian Schmengler, 2013-01-28 18:24:04