Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2011, 20:37   #1
romantik2011
Пользователь
 
Регистрация: 20.07.2011
Сообщений: 70
По умолчанию Наследование PHP

Прочитал про деструкторы, возникли пару вопросов.

1)Для того чтоб новосозданный объект удалился с оперативной памяти не достатоно лишь прописать деструктор в классе, ещё отдельно нужно прописать название объекта в функции unset?
2)Если деструктор освобождает память, решил сделать бесконечный цикл, который бы выводил результат вызова автоматически созданного объекта.
Вот написал код.
PHP код:
<?php 
class User{
public  
$name;
public 
$login;
public 
$password;
   
function 
__construct($name,$login,$password){
   echo 
"Имя:  $name <br>";
   echo 
"Логин: $login ";
   echo 
"<br> Пароль:  $password <br><br>";
 }
 
 function 
__destruct(){
 }
  
}

class 
SuperUser extends User{
public 
$role "Ялта<br><br>";
}

$object = new SuperUser("Super Admin","root","pass@word1");
echo 
$object->role;

for(;;){ 
$obj1 = new User("Пушкин","Pisatel","111");
unset(
$obj1);
}


?>
Цикл работает, но ничего не выводит, а я хотел чтоб выводил, удалил созданный объект, снова вывел и так бесконечно.

Последний раз редактировалось romantik2011; 23.07.2011 в 21:23.
romantik2011 вне форума Ответить с цитированием
Старый 23.07.2011, 21:33   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
1)Для того чтоб новосозданный объект удалился с оперативной памяти не достатоно лишь прописать деструктор в классе, ещё отдельно нужно прописать название объекта в функции unset?
наличие дуструктора вообще не влияет на освобождение памяти, он только позволяет чтото сделать перед освобождением.

а вот unset, уже и освобождает память связанную с переменнкой.(так же это делается в конце блоков и скрипта)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.07.2011, 22:38   #3
romantik2011
Пользователь
 
Регистрация: 20.07.2011
Сообщений: 70
По умолчанию

PHP код:
class A{
public 
$f 5;
function 
__destruct(){
echo 
" УРА !";
}
}

$obj = new A();

echo 
$obj='Denis'
1)Cначала выводит УРА а только потом Denis, почему так?
2)Как это объекту можно присваивать стрковые значения?
romantik2011 вне форума Ответить с цитированием
Старый 23.07.2011, 23:14   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ответ на оба вопроса сразу.

сначало у вас объект уничтожается, потом в эту переменную пишется строка(что проверяется через тип данных)
то есть по сути:
Код:
$obj=new A();
unset($obj);
$obj="Denis";
echo $obj;
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наследование в С++ 3AKPbIBAKA Помощь студентам 3 24.11.2010 16:38
Наследование AJlxuMuk Общие вопросы C/C++ 8 06.07.2010 16:08
Наследование Сергей089 Помощь студентам 6 07.02.2010 12:04
Наследование z3rg Общие вопросы C/C++ 9 30.04.2009 20:43