Хорошо, я думаю, что у меня есть кое-что здесь …
Внутри класса я пытаюсь обусловить приватную функцию на основе имени используемого метода.
Так что код выглядит примерно так:
<?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);
Если я сделаю var_dump () на __METHOD__
на том же уровне я пытаюсь использовать его, я получу хороший string(19)"my_class::my_method"
, Поэтому я сравниваю строку с другой.
Следующее также потерпит неудачу:
__METHOD__
к (string) $var
и сравни их.Я могу ошибаться, но я думаю, что я попал в ошибку здесь 🙁
Версия PHP 5.6.1 — Win
__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;
}
}
Вы должны попробовать __FUNCTION__
Похоже __METHOD__
вернет имя класса вместе с именем функции.