基本上,如果类-CMIIW中不存在任何方法,则将调用魔术方法__call()
。
例如,我有这样的基础Controller
class Controller
{
public function __call($method, $args)
{
//echo error
}
public function foo()
{
echo "foo";
}
}
和AuthController
这样扩展了基础Controller
class AuthController extends Controller
{
public function create()
{
return $this->bar();
}
}
我的问题是我怎么知道它从哪里来?它用于调试目的。我所知道的只是魔法常数__LINE__
答案 0 :(得分:1)
也许您正在使用get_called_class
这样的功能:
public function __call($method, $args)
{
var_dump(get_called_class());
}
将返回:string(14) "AuthController"
完整代码如下:
<?php
namespace Foo;
class Controller
{
public function __call($method, $args)
{
var_dump(get_called_class());
}
public function foo()
{
echo "foo";
}
}
namespace Bar;
class AuthController extends \Foo\Controller
{
public function create()
{
return $this->bar();
}
}
$c = new \Bar\AuthController();
$c->create();
请检查here。