使用静态方法的命名空间或类?

时间:2014-10-11 19:05:14

标签: php

我想分组几种方法。这些方法不包含任何类数据,因此是静态的。 PHP有2个选项可以做到这一点;将它们放在命名空间或类中。例如:

// option 1
namespace Renderer;
function render()
{

}
// invoke with 'Renderer\render()'

// option 2
class Renderer
{
    static function render()
    {

    }
}

// invoke with 'Renderer::render()'

这两个性能选项有什么区别吗?我的意思是,我的想法是类声明使用RAM中的静态方法创建一个对象。因此,使用比命名空间稍多的内存。或者那不重要吗?

2 个答案:

答案 0 :(得分:3)

  

类声明使用静态方法创建一个对象   RAM

除非进行实例化,否则不会创建对象,即$myObject = new MyClass();

解析后,函数将进入符号表,无论它们是否是类定义的一部分。

  

这两个性能选项之间是否存在差异

它可以忽略不计,不应该是您的主要关注点。寻找更好的组织/可读性。

将方法封装在类定义中可以提供更好的组织。 它还允许autoloaders使用它。

答案 1 :(得分:1)

"或者那不重要吗?"不,它确实没有。

以不同的方式构建代码,以便在像这样的微小内存影响中更有效率,完全集中在完全错误的问题上。

PHP是一种非常高级的编程语言,其大部分功能是为了方便程序员而实现的,因为它们允许您编写富有表现力,结构化,可维护的代码。有效地使用这些功能是你应该考虑的,例如:

  • 静态类仍然可以拥有私有方法和属性,甚至可以使用多态来感谢Late Static Binding
  • 命名空间可以将类和独立函数收集到一个连贯的分组中,并且可以按层次结构进行组织。为了方便起见,它们还允许将项目导入到不同名称空间的范围内,PHP 5.6 adding support for aliasing imported functions以及类。

如果由于某种原因,你确实需要担心速度或内存的微优化问题,那么你不应该用高级的,虚拟机执行的语言来编写PHP,而应该让它更接近控制这样的事情,例如C.对于大多数人来说,高级编程构造的便利性大大超过了对现代硬件执行它们的微小影响。