我需要调用一个将执行操作的类,但我知道我不会调用它的方法。这是一个PHP应用程序。有没有人只是做以下事情:
require('class.Monkeys.php');
new Monkeys(); //note I didn't assign it to a variable
答案 0 :(得分:11)
是的,这完全有效。然而,它可以说是糟糕的形式,因为黄金法则是:
构造函数不应该做实际的工作。
构造函数应该设置一个对象,使其有效并处于“就绪状态”。构造函数不应该开始自己执行工作。因此,这将是更健全的:
$monkeys = new Monkeys;
$monkeys->goWild();
或者,如果您愿意并且正在运行足够高级的PHP版本:
(new Monkeys)->goWild();
答案 1 :(得分:0)
好吧,我们假设我们有一个名为猴子的类名。
档案class.Monkeys.php
class Monkeys {
function __construct()
{
$this->doSomething()
}
public function doSomething(){
echo "new Monkeys()->doSomething() was called";
}
public function anotherMethod(){
echo "new Monkeys()->anotherMethod() was called";
}
}
现在,您可以在运行时实例化该类,而无需将其保存到变量中。
require('class.Monkeys.php');
// you can just instantiate it and the constructur will be called automatically
(new Monkeys());
// or you can instantiate it and call other methods
(new Monkeys())->anotherMethod();
我不确定垃圾收集器是否会删除实例化的类,但我假设因为这些类没有保存到变量中,所以这不会保存在内存中的某个位置,这将是完美的。 / p>