Хорошо, я думаю, что у меня есть что-то здесь ...Невозможно сравнить магическую константу __METHOD__
Внутри класса, им пытается кондиционировать частные функции на основе имени использованную метода.
Поэтому код выглядит примерно так:
<?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"
. Поэтому я сравниваю строку с другой.
Следующая также не будет:
- Cast как ВАР в строку и сравнить их.
- Скопировать
__METHOD__
в(string) $var
и сравнить их. - Верхние обе строки и сравнить их.
- Использование одинарных кавычек для текста.
Я мог бы быть неправильно, но я думаю, что я ударил ошибка здесь :(
PHP версии 5.6.1 - Win
Я попробовал '$ a = __METHOD__; echo $ a === __METHOD__? 1: 2; ', он печатает' 1' – Andrew
'__METHOD__' должен быть' my_class :: private_function' –
Я обновил его, чтобы отразить вызванный метод ... – Solrac