有没有办法在PHP中扩展特性?
我想使用现有的有没有办法在PHP中扩展特性?,php,laravel,traits,php-7,Php,Laravel,Traits,Php 7,我想使用现有的trait的功能,并在其上创建我自己的trait,以后再将其应用于类 我想扩展Laravel SoftDeletestrait以实现SaveWithHistory功能,因此它将创建一个记录副本作为已删除记录。我还想用record\u made\u by\u user\u id字段扩展它。是的,有。你只需要定义如下的新特征: trait MySoftDeletes { use SoftDeletes { SoftDeletes::saveWithHistor
trait
的功能,并在其上创建我自己的trait
,以后再将其应用于类
我想扩展
Laravel SoftDeletes
trait以实现SaveWithHistory
功能,因此它将创建一个记录副本作为已删除记录。我还想用record\u made\u by\u user\u id
字段扩展它。是的,有。你只需要定义如下的新特征:
trait MySoftDeletes
{
use SoftDeletes {
SoftDeletes::saveWithHistory as parentSaveWithHistory;
}
public function saveWithHistory() {
$this->parentSaveWithHistory();
//your implementation
}
}
我有不同的方法
ParentSaveWithHistory
仍然适用于此特性,因此至少应定义为private
trait MySoftDeletes
{
use SoftDeletes {
saveWithHistory as private parentSaveWithHistory;
}
public function saveWithHistory()
{
$this->parentSaveWithHistory();
}
}
还要考虑traits中的“覆盖”方法:
use SoftDeletes, MySoftDeletes {
MySoftDeletes::saveWithHistory insteadof SoftDeletes;
}
此代码使用的方法是
MySoftDeletes
中的saveWithHistory
,即使它存在于SoftDeletes
中,可能的重复项也是一个很好的答案。仅供参考,以下是进一步的信息:在此上下文中,您可能会发现以下资源很有用:显示了扩展特征的另一个示例。