无法比较魔法常量 __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"
。所以我正在将一个字符串与另一个字符串进行比较。
以下也会失败:
- 将两个变量转换为字符串并进行比较。
- 将
__METHOD__
复制到(string) $var
并进行比较。
- 两个字符串的上层并比较它们。
- 对文本使用单引号。
我可能错了,但我想我在这里遇到了一个错误:(
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;
}
}
好的,我想我这里有东西...
在 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"
。所以我正在将一个字符串与另一个字符串进行比较。
以下也会失败:
- 将两个变量转换为字符串并进行比较。
- 将
__METHOD__
复制到(string) $var
并进行比较。 - 两个字符串的上层并比较它们。
- 对文本使用单引号。
我可能错了,但我想我在这里遇到了一个错误:(
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;
}
}