我写在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);
}
是否有某种关于最佳实践的? 我不认为我需要的工具箱中的各种实例。
让他们静态函数。
class Toolbox {
static public function Tool1(){
}
}
Toolbox::Tool1(); // Call the static method without instantiating the object
为什么静态类,而不是命名空间?
因为静态实用类倾向于成长,往往是很多。 你可能有一个文件 , 字符串 , 数组 ,...等等。他们每个人都可以很容易地跳5K线,甚至更多。 但你总是使用它们? 没有! 他们可能会在您网站上的网页的5%被使用。 那么,为什么它们包括在首位?
PHP的自动加载^ 来到我们的援助在这里 。 但是, 仅自动加载带班工作 ,而命名空间已被包括在内 。 现在,您有三种选择:
- 您
include
/ require
一切,所以你要确保你的命名空间始终可以访问,但你强迫PHP解析了很多在每次运行时文件的再加上你的实际固有的性能损失including
/ requiring
一个文件 - 你保持
include_once
/ require_once
每个.php
文件,你用你的实用工具类 - 您使用
spl_autoload_register
和忘记的依赖,而磁带自动加载机繁重在后台为你
前两个可以和命名空间而最后需要一个静态类 。 当你的代码库成长了很多,你开始欣赏autoload
,你开始欣赏静态类不管别人告诉你。 所以:
best practices == guidelines && best practices != mandatory practices
best practices != what works best in your specific scenario
^ 现在投了反对票准备 :)
文章来源: Object method call VS class method call. Best practice? [closed]