PHP - 如何销毁对象及其包含的对象?
PHP - how to destroy object and objects it contains?
我有一个用 PHP 编写的 CLI 脚本。在此脚本中,我有一个 mainClass 实例,其中包含许多存储在 PHP 数组中的其他类型对象的实例。如何销毁 $mainObject 及其包含的所有对象?
示例代码:
class mainClass
{
private $_array1 = array();
private $_array2 = array();
private $_array3 = array();
public function __construct($data)
{
foreach ($data['a1'] as $val) {
$this->_array1[] = new Object1($val);
}
foreach ($data['a2'] as $val) {
$this->_array2[] = new Object2($val);
}
foreach ($data['a3'] as $val) {
$this->_array3[] = new Object3($val);
}
}
}
$mainObject = new mainClass($data);
function someFunction(mainClass $mainObject)
{
unset($mainObject);
}
- unset($mainObject) 会销毁它和它包含的所有对象吗?
- 我必须分别销毁每个对象吗?
- 我应该使用 mainClass 的析构函数来销毁 $mainObject 包含的对象(调用它们的析构函数)吗?
您正在寻找 unset()。
但请注意,您不能显式销毁对象。
它将留在那里,但是如果您取消设置该对象并且您的脚本将 PHP 推送到内存限制,则不需要的对象将被垃圾收集。我会使用 unset() (而不是将其设置为 null),因为它似乎具有更好的性能(未测试但记录在 PHP 官方手册的评论之一中)。
话虽如此,请记住 PHP 始终会在提供页面后立即销毁对象。因此,只有在非常长的循环 and/or 大量密集页面上才需要这样做。
请参考此link
Best way to destroy PHP object?
未设置($mainObject);将销毁对象并释放内存。
最佳做法是将该对象初始化为 null。
$mainObject = NULL;
参考:
What's better at freeing memory with PHP: unset() or $var = null
我有一个用 PHP 编写的 CLI 脚本。在此脚本中,我有一个 mainClass 实例,其中包含许多存储在 PHP 数组中的其他类型对象的实例。如何销毁 $mainObject 及其包含的所有对象?
示例代码:
class mainClass
{
private $_array1 = array();
private $_array2 = array();
private $_array3 = array();
public function __construct($data)
{
foreach ($data['a1'] as $val) {
$this->_array1[] = new Object1($val);
}
foreach ($data['a2'] as $val) {
$this->_array2[] = new Object2($val);
}
foreach ($data['a3'] as $val) {
$this->_array3[] = new Object3($val);
}
}
}
$mainObject = new mainClass($data);
function someFunction(mainClass $mainObject)
{
unset($mainObject);
}
- unset($mainObject) 会销毁它和它包含的所有对象吗?
- 我必须分别销毁每个对象吗?
- 我应该使用 mainClass 的析构函数来销毁 $mainObject 包含的对象(调用它们的析构函数)吗?
您正在寻找 unset()。
但请注意,您不能显式销毁对象。
它将留在那里,但是如果您取消设置该对象并且您的脚本将 PHP 推送到内存限制,则不需要的对象将被垃圾收集。我会使用 unset() (而不是将其设置为 null),因为它似乎具有更好的性能(未测试但记录在 PHP 官方手册的评论之一中)。
话虽如此,请记住 PHP 始终会在提供页面后立即销毁对象。因此,只有在非常长的循环 and/or 大量密集页面上才需要这样做。
请参考此link
Best way to destroy PHP object?
未设置($mainObject);将销毁对象并释放内存。
最佳做法是将该对象初始化为 null。
$mainObject = NULL;
参考: What's better at freeing memory with PHP: unset() or $var = null