实例化一个类而不分配给变量

时间:2014-07-09 12:48:08

标签: php

我需要调用一个将执行操作的类,但我知道我不会调用它的方法。这是一个PHP应用程序。有没有人只是做以下事情:

require('class.Monkeys.php');
new Monkeys(); //note I didn't assign it to a variable

2 个答案:

答案 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>