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