好的,我想我在这里有一些东西......
在一个类中,我试图根据使用的方法名称调整私有函数。
所以代码看起来像:
<?php
class my_class{
public function my_method($arg1) {
$this->private_function($arg1);
}
private function private_function($arg2){
if (__METHOD__ == "my_class::my_method"){
#THIS FAILS
}else{
#THIS WORKS
}
return;
}
}
(new my_class())->my_method($something);
如果我在同一级别的__METHOD__
上执行var_dump()我试图使用它,我会得到一个不错的string(19)"my_class::my_method"
。所以我将一个字符串与另一个字符串进行比较。
以下内容也将失败:
__METHOD__
复制到(string) $var
并进行比较。我可能错了,但我想我在这里遇到了一个错误:(
PHP版本5.6.1 - 赢取
答案 0 :(得分:0)
你应该试试__FUNCTION__
我猜__METHOD__
将返回类名和函数名。
答案 1 :(得分:0)
__METHOD__
返回当前的类方法名称。在您的情况下,这是my_class::private_function
。
如果你想知道调用方法,最干净的方法是将它作为参数传递。
class my_class {
public function my_method($arg1) {
$this->private_function($arg1, __METHOD__);
}
private function private_function($arg2, $caller) {
if ($caller == "my_class::my_method") {
} else {
}
return;
}
}