没有变量的类实例

时间:2011-05-25 03:34:00

标签: php

我想要解决的是不好的做法是实例化像

这样的类
new Classname();

因为我需要运行类__construct但我不需要使用过去的类。因为类中的其他函数将从__construct中调用。

3 个答案:

答案 0 :(得分:5)

它可以工作,但是,作为维护代码的人,我会对此感到非常困惑。一般来说,仅仅实例化一个对象没有副作用,所以我假设我可以删除该行,一切都会正常工作。

我建议您重新考虑代码的结构,因为在__construct中放置带有副作用的代码绝对不是标准的。

答案 1 :(得分:1)

考虑使用类似的东西:

class Foo
{
  public static function do_something()
  {
     // ...
  }
}

Foo::do_something();

虽然你得到的东西会起作用,但不清楚是否应该发生某些事情。

(如果你坚持使用这样的物体,至少每当你这样做时都要清楚地记录下来。)

答案 2 :(得分:0)

好吧,我们假设我们在文件中有一个名为 HelloWorld 的类名。

档案class.HelloWorld.php

class HelloWorld {

   function __construct()
   {
   }

   public function doSomething(){
       echo "new HelloWorld()->doSomething() was called";
   }

   public function anotherMethod(){
       echo "new HelloWorld()->anotherMethod() was called";
   }
}

现在,您可以在运行时实例化该类,而无需将其保存到变量中。

require('class.HelloWorld.php');
// you can just instantiate it and the constructur will be called automatically 
(new HelloWorld());

// or you can instantiate it and call other methods
(new HelloWorld())->doSomething();

我不确定垃圾收集器是否会删除实例化的类,但我假设因为这些类没有保存到变量中,所以这不会保存在内存中的某个位置,这将是完美的。 / p>