Turist
Новичок
Странности PHP при include'e файлов с унаследованными классами
Проблема скорее теоретическая, т.к. при нормальном использование include (а точнее include_once) не возникает, но всё же...
Есть два скрипта:
Скрипт 1 bibl.inc:
Скрипт 2 go.php:
Если я правильно понимаю ошибок при исполнение появится не должно, но:
Собственно основной интерес вызывает даже не попытка передекларировать MyClass2, хотя, по идеи, этого не должно произойти, т.к. при втором вложении bibl.inc глобальная переменная loaded=true и мы покинем bibl.inc в строке 3.
Странно то, что если уж ошибка возникает, то почему она возникает не при декларации MyClass?
Т.е. почему PHP всё таки парсит bibl.inc второй раз и если уж парсит,то почему пытается переобъявить только наследуемые классы?
Возможно я где-то что-то упустил в документации или в теории, укажите пожалуйста что и где?
(Коллеги, ещё раз повторяю, я знаю о существовании include_once! Вопрос более теоретический чем практический)
-~{}~ 08.06.06 19:03:
Чуть не забыл - PHP 5.1.4 хотя и на 4.3.2 та же история
Проблема скорее теоретическая, т.к. при нормальном использование include (а точнее include_once) не возникает, но всё же...
Есть два скрипта:
Скрипт 1 bibl.inc:
Код:
<?php
if (isset($GLOBALS['loaded'])) {
return;
}
$GLOBALS['loaded']=true;
class MyClass {
}
class MyClass2 extends MyClass {
}
?>
Код:
<?php
include('bibl.inc');
include('bibl.inc');
?>
Код:
>php ./go.php
Fatal error: Cannot redeclare class myclass2 in /var/www/test1/classtest/bibl.inc on line 11
Странно то, что если уж ошибка возникает, то почему она возникает не при декларации MyClass?
Т.е. почему PHP всё таки парсит bibl.inc второй раз и если уж парсит,то почему пытается переобъявить только наследуемые классы?
Возможно я где-то что-то упустил в документации или в теории, укажите пожалуйста что и где?
(Коллеги, ещё раз повторяю, я знаю о существовании include_once! Вопрос более теоретический чем практический)
-~{}~ 08.06.06 19:03:
Чуть не забыл - PHP 5.1.4 хотя и на 4.3.2 та же история