Чтобы сделать это простым, я заметил, что PHP, похоже, не предлагает какой-либо магической константы для определения того, какое имя изменило черту в классе. Поскольку это звучит смутно для меня словами, я приведу пример, поскольку это довольно легко и ожидало, что он будет где-то в новом PHP 5.5, я не вижу способа его выполнения. Так вот:Кто-нибудь знает PHP Magic Constant для переопределенного имени Trait в классе?
Скажет, у нас есть класс, который использует некоторые черты, которые конфликтуют с некоторой функцией внутри класса, например:
class SomeClass {
use \Name\Space\SomeTrait { SomeFunction as private NewFunctionName; }
function SomeFunction() {
$this->NewFunctionName();
}
}
Поскольку, очевидно, этот класс имеет функцию «SomeFunction», и мы знаем, что внутри SomeTrait, который мы включили, является функцией, которая сопоставляет по имени функции, которую мы имеем внутри этого класса. Теперь, поскольку «SomeFunction» вошел в этот класс через черту внутри \ Name \ Space, эти 2 функции выполняют две разные вещи, но, случается, используют одно и то же имя и внутри любой другой функции или буквально нашу функцию «SomeFunction», , мы затем используем «SomeFunction» из нашей черты, называя ее «NewFunctionName».
Так что, надеюсь, я никого здесь не потерял, так как в этом заключается мой вопрос в приведенном выше сценарии. Внутри \ Name \ Space \ SomeTrait \ SomeFunction(), как можно получить "NewFunctionName", что эта функция признака была назначена тоже? Можно было бы подумать, чтобы использовать магический метод, такие как __ FUNCTION __ или __ МЕТОД __ или даже __ Черту __, за исключением того, ни один из них дают ожидаемый результат, так что делает кто-нибудь знаете способ получить эту информацию, не передавая ее функции как параметр и приводящую к взлому кода? Может быть, PHP 5.6 необходимо добавить новый магическая константа __ AS __ или скорректировать результат __ TRAIT __, я не понимаю, почему __ TRAIT __ и __ FUNCTION _ необходимо вернуть ту же информацию (или почти такую же информацию). Любая помощь была бы удивительной, если бы это был нетрадиционный хакерский метод, мне хотелось увидеть мои варианты, пока я не смогу открыть отчет об ошибке с php об этом. (Если это действительно ошибка)
редактировать:
Мой текущий, наименее Hacky, метод представляется,
debug_backtrace()[0]['function']
и хотя он работает, я чувствую, что это делает много чтобы получить простую строку, особенно если вы много используете эту функцию. :/
Вы когда-нибудь находили ответ на этот вопрос? У меня такой же вопрос. – diolemo