Можете ли вы получить имя метода из метода в 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__ненужно).