nev*_*ame 6 php oop code-organization organization
我有很多我在网上创建或复制的功能.
我想知道我是否应该将它们存储在我刚刚包含在脚本中的文件中,或者我应该将每个函数存储为类中的静态方法.
例如.我有一个getCurrentFolder()和一个isFilePhp()函数.
它们应该按原样存储在文件中还是存储在类中:
Folder :: getCurrent()File :: isPhp();
你好吗?
我知道这有点像"你想要的"问题,但是对于一些建议/最佳实践会很好
谢谢.
你是对的,这是一个非常主观的问题,但我可能会混合使用你的两种选择。
您有一个类(例如 Helper),它具有__call()(和/或__callStatic()如果您使用 PHP 5.3+)魔术方法,当调用未定义的 [static] 方法时,它将加载相应的帮助程序文件并执行帮助程序函数。请记住,虽然包含文件会降低性能,但我相信您在文件组织方面获得的好处远远超过了微小的性能损失。
一个简单的例子:
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
Run Code Online (Sandbox Code Playgroud)
您可以进一步优化此代码片段,甚至可以拥有多种类型的帮助程序(文件夹、文件)等,方法是__call[Static]()向每个类添加一个魔术方法并在帮助程序文件/函数的文件夹/文件结构中实现一些逻辑。