|
|
|
| Возникла надобность в такой схеме.
Возможно ли вызывая какой либо метод класса удалить созданный объект? Желательно в конструкторе конечно. Или возможно ли вызвать деструктор в конструкторе?
<?
class SimpleClass
{
protected $returnVal = 'ку ку';
function __construct($testVar)
{
if ($testVar >2) {
echo $this->returnVal;
}
else
$this->destroy();
}
function destroy()
{
}
}
$test1 = new SimpleClass(1);
$test2 = new SimpleClass(3);
?>
|
| |
|
|
|
|
|
|
|
для: Слух
(17.02.2010 в 12:54)
| | Под удалением объекта что имеется в виду? Физическое его удаление или закрытие соединений, очистка переменных?
PS Лучше не деструктор вызывать, а создать отдельный метод, который и использовать как в конструкторе, так и деструкторе. | |
|
|
|
|
|
|
|
для: cheops
(17.02.2010 в 13:58)
| | Именно физическое удаление, чтобы в переменной $test1 было NULL | |
|
|
|
|
|
|
|
для: Слух
(17.02.2010 в 14:01)
| | Нет, изнутри объекта не получится, деструктор он же не уничтожает объект - это просто метод, который вызывается перед уничтожением объекта. | |
|
|
|
|
|
|
|
для: cheops
(17.02.2010 в 14:08)
| | Получается тогда только так, спасибо.
<?
class SimpleClass
{
protected $returnVal = 'ку ку';
protected $destroy = false;
function __construct($testVar)
{
if ($testVar >2)
{
echo $this->returnVal;
}
else
$this->destroy();
}
function destroy()
{
$this->destroy = true;
}
function get_destroy()
{
return $this->destroy;
}
}
function testObject($obj)
{
if($obj->get_destroy() === true)
unset($obj);
else
return $obj;
}
$test1 = testObject(new SimpleClass(3));
$test2 = testObject(new SimpleClass(1));
var_dump($test1);
var_dump($test2);
?>
|
| |
|
|
|