在类中使用PHP属性重载($ this)

时间:2014-10-26 03:48:20

标签: php

我试图从类的方法中触发__get。见下文。我想如果我试图通过$ this->用户获取属性,那么__get将被触发。但是,它似乎并非如此。这可能在PHP?或者它是否仅适用于外部流程(例如$ test->用户确实触发它)

<?php

class Test
{
    protected $user = 'Mario';

    public function __get($name)
    {
        echo "Getting '$name'\n";
    }

    public function doSomething()
    {
        $user = $this->user; // doesn't trigger __get
        //...
    }
}

$test = new Test;
$test->doSomething();
//echo $test->user; // this does trigger __get

1 个答案:

答案 0 :(得分:0)

在课程内部,$user可见,因此无需拨打__get。仅当在类外部无法解析属性时才调用__get(如果将其更改为公共而不是受保护,则不会从类外部调用__get

如果您想在这种情况下强制拨打__get,则必须明确地将其称为$this->__get('user')