我正在用PHP编写应用程序,我在一个类中收集了一些杂项函数,我称之为工具箱
Class toolbox {
public function misc($var) {
return do_something($var);
}
}
我在各种脚本中加载工具箱然后使用它,但我不确定最佳实践应该是什么......
选项1:对象方法调用
__construct() {
require_once('toolbox.php');
$this->ToolBox = new toolbox;
}
some_function($input){
return $this->ToolBox->misc($input);
}
选项2:类方法调用
__construct() {
require_once('toolbox.php');
}
some_function($input){
return ToolBox::misc($input);
}
是否有某种最佳做法?我认为我不需要工具箱的各种实例。
答案 0 :(得分:0)
让它们成为静态功能。
class Toolbox {
static public function Tool1(){
}
}
Toolbox::Tool1(); // Call the static method without instantiating the object
为什么是静态类而不是命名空间?
因为静态实用程序类往往会增长并且往往很多。您可能有一个用于文件,字符串,数组,...等。每个人都可以轻松跳5K线甚至更多。 但是你总是使用它们吗?不!它们可能会在您网站的5%页面中使用。那么为什么要把它们放在首位呢?
PHP's Autoload^ 来帮助我们。但自动加载仅适用于类,而名称空间必须包含。你现在有三个选择:
include
/ require
所以你要确保你的命名空间总是可以访问但你强制PHP在每次运行时解析很多文件加上你得到实际的{{1 } / including
文件requiring
文件中保留include_once
/ require_once
.php
并忘记了依赖关系,而自动加载器在后台为你做了繁重的工作 前两个可以使用命名空间,而最后一个需要静态类。当您的代码库增长很多时,您开始欣赏spl_autoload_register
并开始欣赏静态类,无论其他人告诉您什么。所以:
autoload
^ 现在准备负面投票:)