Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Удалить объект в конструкторе
 
 автор: Слух   (17.02.2010 в 12:54)   письмо автору
 
 

Возникла надобность в такой схеме.
Возможно ли вызывая какой либо метод класса удалить созданный объект? Желательно в конструкторе конечно. Или возможно ли вызвать деструктор в конструкторе?

<?
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);
?>

  Ответить  
 
 автор: cheops   (17.02.2010 в 13:58)   письмо автору
 
   для: Слух   (17.02.2010 в 12:54)
 

Под удалением объекта что имеется в виду? Физическое его удаление или закрытие соединений, очистка переменных?

PS Лучше не деструктор вызывать, а создать отдельный метод, который и использовать как в конструкторе, так и деструкторе.

  Ответить  
 
 автор: Слух   (17.02.2010 в 14:01)   письмо автору
 
   для: cheops   (17.02.2010 в 13:58)
 

Именно физическое удаление, чтобы в переменной $test1 было NULL

  Ответить  
 
 автор: cheops   (17.02.2010 в 14:08)   письмо автору
 
   для: Слух   (17.02.2010 в 14:01)
 

Нет, изнутри объекта не получится, деструктор он же не уничтожает объект - это просто метод, который вызывается перед уничтожением объекта.

  Ответить  
 
 автор: Слух   (17.02.2010 в 14:24)   письмо автору
 
   для: 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);
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования