我有两个这样的课程:
class one
{
public $var1 = 'anythig';
}
class two
{
public $var2 = 'anythig';
}
我想知道当我创建这些类的对象实例时会发生什么?我的观点是存储在内存中的值。实际上我有一些大班,而且我的资源有限。那么我想知道,如果我把NULL
放到我的课堂上,不再需要的话就好了吗?并帮助优化?
我有一个switch()
来包含所需的课程。像这样的东西:
switch{
case "one":
require_once('classes/one.php');
break;
case "two":
require_once('classes/two.php');
break;
}
每次我只需要一节课。当我定义一个新对象($obj = new class
)我之前定义为对象实例的类会发生什么?那还留在记忆中?如果我提出NULL
有帮助吗?请指导我..
修改
最后一行是否有用?
$obj = new myvlass;
echo $obj->property; // there is where that my class is done
$obj=NULL;
答案 0 :(得分:0)
What determines when a class object is destroyed in PHP?
PHP手册指出“只要删除对特定对象的所有引用,就会调用析构函数方法”这是真的(尽管可能导致某些undesirable behaviour。)
如果你明确地将对象变量设置为NULL
,那么PHP无论如何都会破坏它,这并不重要。
答案 1 :(得分:0)
我会建议我按照以下方式实现课程的最佳方式:
<?php
class scSendMail
{
protected $from;
protected $toList;
protected $replyTo;
protected $subject;
protected $message;
public function __construct()
{
register_shutdown_function(array($this,'__destruct'));
$this->setFrom("updates@planetonnet.com");
$this->setReplyTo("noreply@planetonnet.com");
$this->setSubject("Update from PlanetOnNet.com");
}
public function __destruct()
{
unset($this->from);
unset($this->toList);
unset($this->replyTo);
unset($this->subject);
unset($this->message);
}
public function sendMail()
{
// ..... body
}
}
?>
以这种方式,只要不需要对象,它就会通过取消设置变量来破坏自身并释放内存。
你可以随时启动另一个对象来替换新对象,但要小心根据当前持有的对象使用方法。
只要你不再需要使用它就可以设置为NULL以释放内存,并使用新变量来使用新对象。