创建一个包含函数的库或一个使用静态方法的类?

时间:2014-03-25 18:21:29

标签: php design-patterns coding-style

考虑到需要创建一个包含一些常用函数的库,这被认为是最佳实践,请使用带有这样的隔离函数的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';
    }

}

1 个答案:

答案 0 :(得分:1)

我肯定会推荐上课。它使您的代码可以移植到其他好处中,例如类属性 - 您通常需要在过程函数中使用全局变量。您还可以在课程中使用公开范围,以便公共范围无法访问您的私人/受保护方法和属性(如果您不希望这样做)。

如果可能的话,我会远离静态方法。它们很难测试,如果可以使bug跟踪变得繁琐,那么类就会越复杂。相反,您可能希望查看dependency injection。基本上,您实例化您的实用程序类,并通过构造函数或mutator方法将其传递给另一个需要它的类。 (但是不要让我完全脱离静电。就像糖一样,它们在少量使用时会有它们的位置。如果你使用它们,尽量保持简单。)

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

希望有所帮助。