У меня есть основной базовый класс:
class BaseClass
{
public function process()
{
echo 'Base::process()';
}
}
и черта:
trait ProtectionTrait
{
public function process()
{
echo 'ProtectionTrait::process()';
}
}
Затем я создаю класс, расширяющий BaseClass и использующий ProtectionTrait с изменением имени его метода process()
на другое:
class ChildClass extends BaseClass
{
use ProtectionTrait {
process as omittedProcess;
}
}
Я бы хотел обойти метод ProtectionTrait :: process (), изменив его имя (как указано выше), но похоже, что он не работает:
$obj = new ChildClass();
$obj->process();
// outputs 'ProtectionTrait::process()'
Можно ли обойти выбранный метод из трейта, поэтому будет вызван метод родительского класса? Я знаю, что могу поместить метод process()
в ChildClass и вызвать там parent::process()
вручную, но можно ли сделать это по-другому?