我可以使用特征吗?或者我会砍掉很大一部分社区?

时间:2013-10-07 作者:TheWebs

如果我将我的主题框架限制为5.4+(最小5.4)php,那么我要删除多少平均社区?所有这些都是为了让我可以利用特征来帮助解决我遇到的一些继承问题in this question I asked.

我担心,如果我采取特质方法,社区中将有近70%或更高的人被淘汰。因为大多数免费托管网站或“共享托管”不会在“omg 5.5.x不允许升级”的基础上升级其php。

2 个回复
最合适的回答,由SO网友:fuxia 整理而成

与本相反,我认为如果有必要,你可以使用特质。确保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
    }
}
易于阅读、测试和保持向后兼容。

SO网友:Ben Miller - Remember Monica

这个official requirements 对于WordPress,请调用PHP 5.2.4或更高版本。当我创建一个插件或主题时,我确保它在5.2.4上工作。

通过使用traits 并且限制用户使用PHP 5.4+,您正在消除about 94% 安装的WordPress库的
enter image description here

当你发布主题或插件时,WordPress上没有任何机制。org指定最低PHP版本;假设您的最低要求与WordPress相同。因此,如果你的主题是在WordPress上。org,PHP 5.2用户将能够安装和激活您的主题,崩溃他们的网站,然后向您寻求支持。并不是每个人都能够简单地更新PHP安装。

结束

相关推荐

自定义POST类型存档-NAV-MENU-template.php中的错误

我使用CCTM plugin 和复制/粘贴存档。php存档车辆。php,但这导致我的标题中出现错误:Warning: in_array() expects parameter 2 to be array, null given in /home/.../public_html/wp-includes/nav-menu-template.php on line 439 每个主菜单项(没有子菜单)都会重复相同的错误。如果我移除存档车辆。php和使用归档查看相同的帖子。php没有出现错误。为什么会这样