Почему, в этом коде
<?php
class Orator {
private $name;
function __construct($name){
$this->name = $name;
echo 'Создан объект ' . $this->name . '<br>';
}
function __destruct() {
echo 'Уничтожен объект ' . $this->name . '<br>';
}
}
function outer(){
$obj = new Orator(__METHOD__);
inner();
}
function inner(){
$obj = new Orator(__METHOD__);
echo 'Внимание, вбрасывание!<br>';
throw new Exception('Hello');
}
echo 'Начало программы<br>';
try {
echo 'Начало try-блока<br>';
outer();
echo 'Конец try-блока<br>';
}
catch (Exception $e) {
echo 'Исключение: ' . $e->getMessage() . '<br>';
}
echo 'Конец программы<br>';
объект не сразу уничтожается? Ведь после конструктора, сразу указан деструктор.
Сейчас это работает вот так:
Начало программы
Начало try-блока
Создан объект outer
Создан объект inner
Внимание, вбрасывание!
Уничтожен объект inner
Уничтожен объект outer
Исключение: Hello
Конец программы
А мне интересно, почему работает не так?
Начало программы
Начало try-блока
Создан объект outer
Уничтожен объект outer
Создан объект inner
Уничтожен объект inner
Внимание, вбрасывание!
Исключение: Hello
Конец программы
У вас метод __destruct() объявлен после метода __construct(), но это не значит, что они будут срабатывать по очереди.
Обычные методы срабатывают тогда, когда их вызывают, а вызывать их можно в любом порядке и сколько угодно раз. В вашем случае __destruct() и __construct() вызываются не явно __construct() - при создании объекта, __destruct() вызывается при уничтожении объекта.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Когда пытаюсь создать новую таблицу в базе данных с помощью плагина RedBean выдает вот такую ошибку:
Есть новостная лента, как получать следующую порцию новостей (10шт) начиная с последней? Дело в том что выдача формируется не по хронологическому...
Добрый деньУ меня на сайте нужно вывести товары, но проблема в том, что вся информация разбросана по разным таблицам БД
Есть поле в БД с типом text и сравнением utf8_general_ciВ данном поле планирую хранить массив, делаю следующим образом: