与本相反,我认为如果有必要,你可以使用特质。确保check for PHP version 插件安装期间。不要让您的用户遇到一些模糊的PHP错误。
不要看wp。组织统计数据过长。版本统计包括对新插件无关紧要的废弃安装。实际上只有15%是最新的。旧网站对统计数据影响很大。
但是
特性很少是架构问题的正确解决方案。如果需要访问多个对象中的相同方法,请使用依赖项注入和/或工厂。
一个非常简单的例子:假设您需要访问多个类中插件的头数据。你可以用一个特质来做这件事。但您不应该这样做。最好将其分离出来并创建一个新类。
interface Plugin_Info_Interface
{
public function set_file( $plugin_file );
public function __get( $name );
}
class Plugin_Info implements Plugin_Info_Interface
{
protected $plugin_file, $data = array();
public function set_file( $plugin_file )
{
$this->plugin_file = $plugin_file;
}
public function __get( $name )
{
if ( isset ( $this->data[ $name ] ) )
return $this->data[ $name ];
$this->data = array_merge(
$this->data,
get_file_data( $this->plugin_file, array( $name ) )
);
if ( isset ( $this->data[ $name ] ) )
return $this->data[ $name ];
return \'\';
}
}
现在,在插件列表表中的一个类中,您只需使用这个单独类的一个实例来获取数据:
class Plugin_Table_Extra
{
protected $plugin_info;
public function set_header_data( Plugin_Info_Interface $plugin_info )
{
$this->plugin_info = $plugin_info;
}
public function show_git_repo()
{
$repo_url = $this->plugin_info->repo_url;
if ( empty ( $repo_url ) )
return;
// create a link
}
}
易于阅读、测试和保持向后兼容。