Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Безконечный цикл в наследовании

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
romantik2011
Отправлено: 23 Июля, 2011 - 20:21:57
Post Id


Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




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

1)Для того чтоб новосозданный объект удалился с оперативной памяти не достатоно лишь прописать деструктор в классе, ещё отдельно нужно прописать название объекта в функции unset?
2)Если деструктор освобождает память, решил сделать бесконечный цикл, который бы выводил результат вызова автоматически созданного объекта.
Вот написал код.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. class User{
  4. public  $name;
  5. public $login;
  6. public $password;
  7.    
  8. function __construct($name,$login,$password){
  9.    echo "Имя:  $name <br>";
  10.    echo "Логин: $login ";
  11.    echo "<br> Пароль:  $password <br><br>";
  12.  }
  13.  
  14.  function __destruct(){
  15.  }
  16.  
  17. }
  18.  
  19. class SuperUser extends User{
  20. public $role = "Ялта<br><br>";
  21. }
  22.  
  23. $object = new SuperUser("Super Admin","root","pass@word1");
  24. echo $object->role;
  25.  
  26. for(;;){ $obj1 = new User("Пушкин","Pisatel","111");
  27. unset($obj1);
  28. }
  29.  
  30.  
  31. ?>
  32.  


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

(Отредактировано автором: 23 Июля, 2011 - 20:23:58)

 
 Top
OrmaJever Модератор
Отправлено: 23 Июля, 2011 - 20:29:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




при бесконечном цыкле ничего не выведет пока не очистите буфер flush()


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
romantik2011
Отправлено: 23 Июля, 2011 - 21:16:05
Post Id


Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




А почему такой код, вызывает ещё в придачу деструктора? Ведь деструктор вызывается только в том случаи когда удалился объект функцией unset() ?
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. class A{
  4. public $f = 5;
  5. function __destruct(){
  6. echo " УРА !";
  7. }
  8. }
  9.  
  10. $obj = new A();
  11. echo $obj->f;
  12. ?>
  13.  
 
 Top
Мелкий Супермодератор
Отправлено: 23 Июля, 2011 - 21:23:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




romantik2011 пишет:
Цикл работает, но ничего не выводит

Выведет, когда завершится скрипт. То есть, никогда.

romantik2011 пишет:
А почему такой код, вызывает ещё в придачу деструктора?

При завершении скрипта вызываются деструкторы всех использованных объектов. Как и в других ЯП.


-----
PostgreSQL DBA
 
 Top
romantik2011
Отправлено: 23 Июля, 2011 - 21:37:57
Post Id


Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. class A{
  2. public $f = 5;
  3. function __destruct(){
  4. echo " УРА !";
  5. }
  6. }
  7.  
  8. $obj = new A();
  9.  
  10. echo $obj='Denis';

1)Cначала выводит УРА а только потом Denis, почему так?
2)Как это объекту можно присваивать стрковые значения?

(Отредактировано автором: 23 Июля, 2011 - 21:45:47)

 
 Top
Мелкий Супермодератор
Отправлено: 23 Июля, 2011 - 22:27:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Потому что вы не объекту присваиваете значение, а переменной. Объект при этом разрушается, вызывая деструктор.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB