6

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

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

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

它们应该按原样存储在文件中还是每个都存储在一个类中:

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

你好吗?

我知道这是一个“如你所愿”的问题,但有一些建议/最佳实践会很棒

谢谢。

4

1 回答 1

3

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

您有一个具有__call()(和/或__callStatic()如果您使用 PHP 5.3+)魔术方法的类(例如 Helper) ,当调用未定义的 [静态] 方法时,它将加载相应的帮助文件并执行帮助函数. 请记住,尽管包含文件会降低性能,但我相信您在文件组织方面获得的好处远远超过对性能的微小影响。

一个简单的例子:

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]()方法是为每个类添加一个魔术方法并在帮助程序文件/函数的文件夹/文件结构中实现一些逻辑。

于 2010-04-27T00:26:17.250 回答