无法比较魔法常量 __METHOD__

Unable to compare magic constant __METHOD__

好的,我想我这里有东西...

在 class 中,我试图根据使用的方法名称来调节私有函数。

所以代码看起来像这样:

<?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"。所以我正在将一个字符串与另一个字符串进行比较。

以下也会失败:

我可能错了,但我想我在这里遇到了一个错误:(

PHP 版本 5.6.1 - Win

你应该试试 __FUNCTION__ 我猜想 __METHOD__ 将 return class 与函数名称一起命名。

__METHOD__ returns 当前 class 方法名称。在您的情况下,这是 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;
    }
}