【发布时间】:2017-11-03 15:28:52
【问题描述】:
PHP 中有什么方法可以判断一个函数是从特定对象类的内部还是外部运行的?
function getToDaChoppa() {
if( "we're inside the Choppa object" ) {
$foo = "We're inside";
} else {
$foo = "We're outside";
}
echo $foo;
}
class Choppa() {
public function getStatus() {
getToDaChoppa();
}
}
跑步:
getToDaChoppa();
( new Choppa )->getStatus();
应该回显:
我们在外面
我们在里面
【问题讨论】:
-
__CLASS__将在后一种情况下设置。 -
get_class($this)返回什么? -
等等,我撒了谎。
__CLASS__只为在类内部定义的函数设置。你是从班级内部调用全局变量吗? -
我认为这是一个完全有效的问题。听到解决方案同样有趣,因为在我多年的编码工作中,我从来没有做过这样的事情:)
-
从一个类中调用一个全局函数不会传递任何关于调用它的类的信息——你需要使用
debug_backtrace或类似的方法来找出函数被调用的位置。或者,将实例作为$context变量传递给函数。