Почему, в этом коде
<?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() вызывается при уничтожении объекта.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Когда пытаюсь создать новую таблицу в базе данных с помощью плагина RedBean выдает вот такую ошибку:
Есть новостная лента, как получать следующую порцию новостей (10шт) начиная с последней? Дело в том что выдача формируется не по хронологическому...
Добрый деньУ меня на сайте нужно вывести товары, но проблема в том, что вся информация разбросана по разным таблицам БД
Есть поле в БД с типом text и сравнением utf8_general_ciВ данном поле планирую хранить массив, делаю следующим образом: