我想问一个关于服务器性能的noob问题。
假设每个类包含具有相同性能的1000行代码。
如果我想使用属于另一个的功能。我发现有3种方法可以做到这一点。
$this->Another_Class = new Another_Class
Another_Class::Wanted_Function()
global $Another_Class
请问服务器性能方面,它们是否相同?或者除了魔术召唤之外我还有其他选择吗?
答案 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();