X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Наследование PHP
romantik2011
romantik2011
Topic Starter сообщение 23.7.2011, 20:38; Ответить: romantik2011
Сообщение #1


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

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


?>
[/PHP]

Цикл работает, но ничего не выводит, а я хотел чтоб выводил, удалил созданный объект, снова вывел и так бесконечно.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
mamchyts
mamchyts
сообщение 23.7.2011, 22:08; Ответить: mamchyts
Сообщение #2


echo $object->role;


Насчет 3 параметров. Все хорошо, у тя ж ведь родитель
__construct($name,$login,$password).
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
romantik2011
romantik2011
Topic Starter сообщение 23.7.2011, 22:16; Ответить: romantik2011
Сообщение #3


А почему такой код, вызывает ещё в придачу деструктора? Ведь деструктор вызывается только в том случаи когда удалился объект функцией unset() ?
[php]
<?php
class A{
public $f = 5;
function __destruct(){
echo " УРА !";
}
}

$obj = new A();
echo $obj->f;
?>
[/php]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
romantik2011
romantik2011
Topic Starter сообщение 23.7.2011, 22:39; Ответить: romantik2011
Сообщение #4


[PHP]class A{
public $f = 5;
function __destruct(){
echo " УРА !";
}
}

$obj = new A();

echo $obj='Denis'; [/PHP]
1)Cначала выводит УРА а только потом Denis, почему так?
2)Как это объекту можно присваивать стрковые значения?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SEVI
SEVI
сообщение 23.7.2011, 23:11; Ответить: SEVI
Сообщение #5


romantik2011, похоже что класс уничтожается, когда вы переменной обьекта присваиваете значение "Денис". Получается что віполняется деструктор, а потом заполняется и выводиться переменная $obj
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 23.7.2011, 23:21; Ответить: alexdrob
Сообщение #6


(romantik2011 @ 23.7.2011, 23:38) *
Цикл работает, но ничего не выводит, а я хотел чтоб выводил, удалил созданный объект, снова вывел и так бесконечно.

не выводит потому что у вас в деструкторе нет оператора echo который выводил бы вам надпись.


(romantik2011 @ 24.7.2011, 01:16) *
А почему такой код, вызывает ещё в придачу деструктора? Ведь деструктор вызывается только в том случаи когда удалился объект функцией unset() ?

деструктор вызывается при уничтожении объекта. Когда скрпит завершает работу, то есть когда весь текст в нём кончился, происходит удаление объектов автоматически, вот и вызывается деструктор.


(romantik2011 @ 24.7.2011, 01:39) *
1)Cначала выводит УРА а только потом Denis, почему так?

потому что вначале вы создали объект в переменной $obj а потом когда вы присвоили ей Denis у вас объект который хранился в переменной - уничтожился и переменная стала хранить строку, а раз объект уничтожился - то и деструктор выполнился.


(romantik2011 @ 24.7.2011, 01:39) *
2)Как это объекту можно присваивать стрковые значения?

объект - это объект, нечто имеющее методы и переменные. Вот переменным можно присвоить, например так $obj->f = "Denis";
а объекту нельзя :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
mamchyts
mamchyts
сообщение 24.7.2011, 11:47; Ответить: mamchyts
Сообщение #7


(alexdrob @ 24.7.2011, 02:21) *
Вот переменным можно присвоить, например так $obj->f = "Denis";
а объекту нельзя :)


Вообще-то это называется "свойства". У класса есть 'методы' и 'свойства'. Блин, народ, вы хоть немного читайте правильную литературу. А то у людей которые читают это, складывается неправильное представление.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 24.7.2011, 11:57; Ответить: alexdrob
Сообщение #8


(mamchyts @ 24.7.2011, 14:47) *
Блин, народ, вы хоть немного читайте правильную литературу.

ок шеф :D

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3395 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1239 24.11.2023, 14:46
автор: alexey
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44896 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) Есть спецы по php/laravel?
3 Mixatraider 1887 26.5.2023, 20:48
автор: Mixatraider
Открытая тема (нет новых ответов) Опытный PHP\Python разработчик в поиске интересных задач
6 daikzlex 3400 25.5.2023, 13:55
автор: daikzlex


 



RSS Текстовая версия Сейчас: 18.4.2024, 5:56
Дизайн