У меня есть черта 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 в классе?
Выстрел в темноте, но поскольку вы не отправили то, что вы пробовали...
Я думаю, что вы ищете is__METHOD__
В вашей функции поезда вы можете вызвать METHOD, чтобы получить текущий псевдоним.
if (__METHOD__ == "testFunction") { //has not been renamed
TestTrait::testFunction
поэтому он бесполезен.