简体   繁体   中英

Magic Methods php, __call __get and __set?

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) ?

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.

will __call again be called?

Yes.

If so, what is __get and __set magic methods are for?

see below:

When I say

 $object->someProperty; 

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

__get('someProperty') because this expression is not an assignment.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM