php - 将类作为方法的集合而没有属性是否可以?

标签 php oop namespaces libraries code-organization

我正在编写一堆通用但相关的函数以供不同的对象使用。我想对这些函数进行分组,但不确定是应该将它们放在一个类中还是简单地放在一个平面库文件中。

将它们当作一个类来对待似乎是不对的,因为没有一种对象会使用它们,而且这样一个包含所有这些函数的类可能不一定具有任何属性。

将它们视为平面库文件似乎太简单了,找不到更好的词。

这方面的最佳做法是什么?

最佳答案

检查命名空间:

http://www.php.net/manual/en/language.namespaces.rationale.php

将它们包装在一个无用的类中是命名空间概念的一种变通实现。这个概念可以让您避免与大型项目或插件/模块类型部署中的其他功能发生冲突。

编辑

坚持使用 PHP 5.2?

使用单独的文件来组织实用程序函数并没有错。一定要用注释记录它们,这样您就不会得到 bunchafunctions.php,这是一个包含 20,000 个目的可疑的程序代码文件。

前缀也没有错。使用前缀是另一种组织功能相似的方法,但一定要避免使用这些语言已经保留的“伪命名空间”。具体来说,“__”被 PHP [ reference 保留为前缀。 ].要格外小心,如果您担心来自其他库的函数冲突,您还可以将函数声明包装在 function_exists 检查中:

if (!function_exists('myFunction')) {
    function myFunction() {
            //code
    }
}

您还可以重新考虑您的对象结构,也许这些实用函数更适合作为所有其他对象都可以扩展的基类中的方法。看看继承:http://www.php.net/manual/en/language.oop5.inheritance.php .基类模式是一种常见且非常有用的模式:

abstract class baseObject {
    protected function doSomething () {
        print 'foo bar';
    }
    public function getSomething () {
        return 'bar foo';
    }
}

class foo extends baseObject {
    public function bar () {
        $this->doSomething();
    }
}

$myObject = new foo();
$myObject->bar();
echo $myObject->getSomething();

您可以在这里试验上面的代码:http://codepad.org/neRtgkcQ

关于php - 将类作为方法的集合而没有属性是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5982456/

相关文章:

php - 如何保持 session 登录直到单击注销

objective-c - Objective C 中的私有(private)类

c++ - 为什么 GCC 允许在不首先使用其命名空间的情况下调用此函数?

php - 如何使用 SendGrid php 库添加回复和发件人名称 header

php - CodeIgniter - 从数组中获取下一条记录

PHPOO : Overriding properties of abstract class

oop - OOP 设计模式中的 "Client"概念?

php - Yii2:模块中的独立操作

python - 如何从回调函数访问(和编辑)变量?

php - 我可以在 laravel 查询生成器中同时使用 `join` 和 `with` 吗?