【问题标题】:Create a library with functions or a class with static methods?创建带有函数的库还是带有静态方法的类?
【发布时间】:2014-03-25 18:21:29
【问题描述】:

考虑到创建具有一些常用函数的库所需要的,被认为是最佳实践的做法是,使用具有如下隔离函数的 lib 文件:

function utilA(){
    echo 'I am a lib with util A function';
}

function utilB(){
    echo 'I am a lib with util B function';
}

function utilC(){
    echo 'I am a lib with util C function';
}

或者用这样的静态方法创建一个类:

class Utils{

    static function utilA(){
        echo 'I am A static method from Utils';
    }

    static function utilB(){
        echo 'I am B static method from Utils';
    }

    static function utilC(){
        echo 'I am C static method from Utils';
    }

}

【问题讨论】:

  • 我认为您最好重构它,而不是将许多不相关的静态方法卡在一个类中。这不是 OO。

标签: php design-patterns coding-style


【解决方案1】:

我绝对会推荐去上课。它使您的代码具有可移植性以及其他好处,例如类属性 - 您通常必须与过程函数中的全局变量有关。您还可以在类中使用可见性,以便公共范围无法访问您的私有/受保护方法和属性(如果您不希望它们访问)。

我会尽可能远离静态方法。它们很难测试,如果类变得更复杂,是否会使错误跟踪变得很麻烦。相反,您可能希望查看dependency injection。基本上你实例化你的实用程序类并通过构造函数或mutator方法将它传递给另一个需要它的类。 (但是,不要让我完全关闭静态。就像糖一样,它们在谨慎使用时有它们的位置。如果你使用它们,请尽可能保持简单。)

如果您尝试将代码片段组织成部分,我建议您使用a look at namespaces。它们可以帮助您组织实用程序并将它们包含在其他项目中,同时最大限度地减少任何命名冲突。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    相关资源
    最近更新 更多