我们说我有以下课程:
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();
我希望我能说的是,如果不是,请告诉我。
答案 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();