Можете ли вы получить имя метода из метода в PHP?

Можно ли сделать что-то подобное?

public function something() { $thisMethodName = method_get_name(); } 

Где method_get_name() возвращает имя метода?

Related of "Можете ли вы получить имя метода из метода в PHP?"

Конечно, вам нужны магические константы.

 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"; }