Можно ли сделать что-то подобное?
public function something() { $thisMethodName = method_get_name(); }
Где method_get_name()
возвращает имя метода?
Конечно, вам нужны магические константы.
function myFunction() { print __FUNCTION__." in ".__FILE__." at ".__LINE__."\n"; }
Узнайте больше из руководства по php
Хотя вы можете использовать магическую константу « __METHOD
__», я настоятельно рекомендую проверить отражение php. Это поддерживается в PHP5.
$modelReflector = new ReflectionClass(__CLASS__); $method = $modelReflector->getMethod(__METHOD__);
Затем вы можете делать такие вещи, как проверка подписи и т. Д.
Поскольку smartj предложил вам попробовать волшебную константу __METHOD__
, но помните, что это вернет строку, содержащую также ваше имя класса, то есть «MyClass :: something». Использование __FUNCTION__
вместо этого вернет «что-то».
Использование __FUNCTION__
– это путь вместо:
public function something() { $thisMethodName = "something"; }
который имеет несколько недостатков, добавляя переменную и память для хранения имени метода в виде строки и дублирования того, что уже существует, поэтому излишне добавляя используемые ресурсы (если вы делаете это для большой библиотеки со многими методами, это имеет большое значение).
Магические константы в PHP гарантированно не изменятся, в то время как для этого подхода потребуется соответствующее редактирование, если имя метода было изменено, тем самым представляя потенциал для несогласованности (обратите внимание, что я действительно сказал, что это означает, что это просто ненужное редактирование, если магия константа).
Время и усилия, чтобы назвать переменную, повторно введите имя метода в виде строки, назначенной этой ненужной переменной, и, конечно, правильно ссылаясь на имя переменной, которая является мотивацией для PHP, снабжающей магические константы, с самого начала (и опровержения любых требований __FUNCTION__
не требуется).
Hackish, но вы также можете его выкопать из возвращаемого значения debug_backtrace ().
Почему ты не можешь это сделать?
public function something() { $thisMethodName = "something"; }