Magic Methods php, __call __get and __set?

Koray Tugay picture Koray Tugay · Jan 28, 2013 · Viewed 9.7k times · Source

my question is, say we have a class:

class SomeClass{

    private $someProperty;


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

Now when I say:

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

the __call method in my class will be called.

When I say

$object->getSomeProperty();

will __call again be called? If so, what is __get and __set magic methods are for?

When I say

$object->someProperty;

then will __get($someProperty) be called? or will it be __set($someProperty) ?

Answer

Marcus Recck picture Marcus Recck · Jan 28, 2013

Anytime an inaccessible method is invoked __call will be called.

Anytime you try to read a property __get will be called, whether it's echo $obj->prop; or $var = $obj->prop;

And lastly, anytime you try to write to a property the __set magic method will be called.