Можете ли вы получить имя метода из метода в PHP?
можно ли сделать что-то подобное?
public function something() {
$thisMethodName = method_get_name();
}
здесь method_get_name()
возвращает имя метода?
6 ответов:
конечно, вам нужны магические константы.
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__
ненужно).