class A { use T { T::say as aTsay; } public function say() { echo 'a__class__:' . __CLASS__ . '<br>'; echo 'a get_class:' . get_class() . '<br>'; echo 'a get_class this:' . get_class($this) . '<br>'; echo 'a get_called_class:' . get_called_class() . '<br><br>'; static::aTsay(); static::Tsay(); } } class B extends A { use T { T::say as Tsay; } public function say() { parent::say(); echo 'b__class__:' . __CLASS__ . '<br>'; echo 'b get_class:' . get_class() . '<br>'; echo 'b get_class this:' . get_class($this) . '<br>'; echo 'b get_called_class:' . get_called_class() . '<br><br>'; static::Tsay(); } } trait T { public function say() { echo 't__class__:' . __CLASS__ . '<br>'; echo 't get_class:' . get_class() . '<br>'; echo 't get_class this:' . get_class($this) . '<br>'; echo 't get_called_class:' . get_called_class() . '<br><br>'; } } $b_say = new B(); $b_say->say();
get_class __class__ get_called_class 分析记录
内容版权声明:除非注明,否则皆为本站原创文章。