Как черта PHP может знать, когда функция была псевдонимом или переименована?

0

У меня есть черта PHP, которая используется во многих классах. Некоторые из этих классов предпочитают переименовывать функции признаков. Один из методов в признаке хотел бы назвать себя. Как он может себя называть? Как узнать, что было переименовано?

<?php

Trait TestTrait 
{
    protected function testFunction()
    {
        // Calls TestClass function
        // instead of the trait function.

        $this->testFunction();

        // Calls TestClass function
        // instead of the trait function.

        static::testFunction();

        // Fatal error: Call to protected method 
        // TestTrait::testFunction() from context 'TestClass'

        TestTrait::testFunction(); # __METHOD__ 

        // This works but requires that
        // the trait know that the function 
        // has been renamed. How can we 
        // determine if has been renamed?

        $this->traitTestFunction();
    }
}

class TestClass
{
    use TestTrait
    {
        testFunction as traitTestFunction;
    }

    function testFunction()
    {
        $this->traitTestFunction();
    }
}

$test = new TestClass();
$test->testFunction();

Связано: Кто-нибудь знает PHP Magic Constant для переопределенного имени Trait в классе?

Теги:
class
function
traits

1 ответ

0

Выстрел в темноте, но поскольку вы не отправили то, что вы пробовали...

Я думаю, что вы ищете is__METHOD__

В вашей функции поезда вы можете вызвать METHOD, чтобы получить текущий псевдоним.

if (__METHOD__ == "testFunction") { //has not been renamed
  • 0
    Я проверил это, но, возможно, не объяснил это в моих комментариях к коду. Он всегда возвращает TestTrait::testFunction поэтому он бесполезен.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню