在哪里存储辅助功能?

时间:2010-04-27 00:03:30

标签: php oop organization code-organization

我有很多我在网上创建或复制的功能。

我想知道我是否应该将它们存储在我刚刚包含在脚本中的文件中,或者我应该将每个函数存储为类中的静态方法。

例如。我有一个getCurrentFolder()和一个isFilePhp()函数。

它们应该按原样存储在文件中,还是存储在类中:

文件夹:: getCurrent() 文件:: isPhp();

你怎么做的?

我知道这有点像“你想要的”问题,但是对于一些建议/最佳实践会很好

感谢。

1 个答案:

答案 0 :(得分:3)

你是对的,这是非常主观的事情,但我可能会混合使用你的两种选择。

你有一个类(比如Helper)有__call()(和/或__callStatic()如果你使用的是PHP 5.3+)magic methods,当一个未定义的[静态]调用方法它将加载相应的帮助文件并执行辅助函数。请记住,虽然包含文件会降低性能,但我相信您在文件组织方面获得的好处远远超过了微小的性能损失。

一个简单的例子:

class helper {
    function __callStatic($m, $args) {
        if (is_file('./helpers/' . $m . '.php')) {
            include_once('./helpers/' . $m . '.php');
            return call_user_func_array($m, $args);
        }
    }
}

helper::isFilePhp(/*...*/); // ./helpers/isFilePhp.php
helper::getCurrentFolder(/*...*/); // ./helpers/getCurrentFolder.php

您可以通过向每个类添加__call[Static]()魔术方法并在文件夹/文件结构中实现某些逻辑来进一步优化此代码段甚至包含多种类型的帮助程序(文件夹,文件)等等您的助手文件/功能。