如何在对象上下文中使用另一个类的方法?

时间:2013-01-17 21:53:13

标签: php performance class

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

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

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

  1. 内部课程$this->Another_Class = new Another_Class
  2. 使用静态Another_Class::Wanted_Function()
  3. 全球global $Another_Class
  4. 请问服务器性能方面,它们是否相同?或者除了魔术召唤之外我还有其他选择吗?

2 个答案:

答案 0 :(得分:1)

我强烈建议你不要使用全局变量。

至于是否使用静态或实例化的类......这完全取决于你想要做的事情。静态成员函数与能够访问其他静态成员函数/变量的命名空间函数基本相同。

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

答案 1 :(得分: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();