1

我想问一个关于服务器性能的菜鸟问题。

假设每个类包含 1000 个具有相同性能的行代码。

如果我想使用一个属于另一个的功能。我发现有 3 种方法可以做到这一点。

  1. 课内$this->Another_Class = new Another_Class
  2. 使用静态Another_Class::Wanted_Function()
  3. 全球的global $Another_Class

请问在服务器性能方面,它们是一样的吗?还是除了魔术电话我还有其他选择吗?

4

2 回答 2

1

应始终避免使用全局变量,并且通常也应避免使用静态变量,除非确实有必要,因为它们不利于代码重用。

此外,您可能想看看控制反转和依赖注入等概念。简而言之,您不应该在类中实例化依赖项,而是注入它。
简单的例子:

class Example
{
    protected $foo;

    public function setFoo($foo)
    {
        $this->foo = $foo;
    }

    public function doSomething()
    {
        $this->foo->callFooMethod();
    }
}

$example = new Example();
$example->setFoo(new Foo);
$example->doSomething();
于 2013-01-17T22:08:35.450 回答
1

我强烈建议您不要将全局变量用于任何事情。

至于是使用静态类还是实例化类……这完全取决于您要做什么。静态成员函数本质上与能够访问其他静态成员函数/变量的命名空间函数相同。

实例化一个类在技术上比访问一个静态类要慢,但只有在 __construct() 和类变量初始化发生时运行逻辑时才会出现这种情况。

于 2013-01-17T21:58:36.180 回答