使用PHP中的类

时间:2011-08-19 18:05:56

标签: php class

我们说我有以下课程:

class Test
{
    function __construct()
    {
        // initialize some variable

        $this->run();
    }

    function run()
    {
        // do some stuff

        $this->handle();
    }

    function handle()
    {
    }
}

通常我会创建一个像:

这样的实例
$test = new Test();

然而,我并不需要$test任何地方,因为班级中的功能一次完成所有工作,之后我不再需要该类的实例。

在这种情况下我该怎么办?或者我应该这样做:$test = new Test();

我希望我能说的是,如果不是,请告诉我。

5 个答案:

答案 0 :(得分:10)

如果它们不需要实例化的实例,它们应该是静态函数:

class Test
{
    private static $var1;
    private static $var2;

    // Constructor is not used to call `run()`, 
    // though you may need it for other purposes if this class
    // has non-static methods and properties.

    // If all properties are used and discarded, they can be
    // created with an init() function
    private static function init() {
        self::$var1 = 'val1';
        self::$var2 = 'val2';
    }

    // And destroyed with a destroy() function


    // Make sure run() is a public method
    public static function run()
    {
        // Initialize
        self::init();

        // access properties
        echo self::$var1;

        // handle() is called statically
        self::handle();

        // If all done, eliminate the variables
        self::$var1 = NULL;
        self::$var2 = NULL;
    }

    // handle() may be a private method.
    private static function handle()
    {
    }
}

// called without a constructor:
Test::run();

答案 1 :(得分:3)

如果您不需要,请执行以下操作:

new Test();

答案 2 :(得分:1)

您可以像(new Test()).functionHere()一样调用它。另外,您可以将函数设置为静态并执行Test::functionHere()

答案 3 :(得分:1)

这些都不是必需的。即使你保留了$ test变量也不会改变任何东西,因为它甚至不会占用700%的RAM内存。继续该计划的流程。上面的最佳答案是在不保存变量实例的情况下启动类。即使你这样做也不会改变任何东西。如果我是你,我会留下那个变量,因为稍后我会添加另一个需要手动调用的函数,这是调用它的最简单方法。

答案 4 :(得分:1)

不需要分配值,它将作为

new Test;

另外,您可以用静态格式编写课程:

class Test
{
  public static function run()
  {
    // do some stuff
    self::handle();
  }

  public static function handle()
  {
  }
}

并将您的课程称为:

Test::run();