class MainClass
{
....
}
require_once('mainclass.php');
class YourClass extends MainClass
{
....
}
require_once('mainclass.php');
require_once('yourclass.php');
$obj1 = new YourClass();
$obj2 = new MainClass();
Аналгично и для функций с суфиксом _once.Include и require идентичны во всём, кроме обработки облома. include() выводит Warning!, а require() выдаёт Fatal Error. Иначе говоря, используйте require(), если вы хотите, чтобы отсутствие файла останавливало процессинг страницы. include() не работает таким образом, скрипт продолжит выполнение.
Не хочу навязывать свое мнение, однако я до последнего искал бы причину ошибки. Тем более такой загадочной, люблю я загадки (когда не deadline конечноПоэтому я буду действовать так:
)Опять же затачиваешься под свою какую-то нынешнюю ситуацию. Предположи, что в будущем тебе придётся создавать несколько экземпляров класса, да ещё в разных подключаемых файлах. Вот тогда и пригодится защита использованием class_exists при объявлении класса.2. Если объявлен - создаю экземпляр класса
3. Если класс не объявлен и файл с определнием класса существует - то делаю ему include_once и создаю экземпляр класса.
#ifndef YorClassH
#define YorClassH
class YorClass
{
...
}
#endif
Я бы тоже искал бы причину! Но заказчик поджимает со сроками - поэтому легче пока причину устранить, а потом на досуге, если время будет, то и отловитьНе хочу навязывать свое мнение, однако я до последнего искал бы причину ошибки
Вся беда в том что локально эта ошибка ниразу не появмлась!PHP Version 4.4.2
FreeBSD 4.11-STABLE
Apache/1.3.34
Сам я на С++ много писал но в PHP другой способ программирования, и нет в нем директив препроцессору - потому и существуют разные функции типа include_once - чтоб только раз файл подключать.Мда, если б чаще пользовали C, C++, то и тред бы не раздулся. Там всё это уже делается на автомате
Ок, спасибо, воспользуюсь твоим алгоритмом!отлаживать надо
Да я тоже так подразумеваю что в этом глюк.ситуация с добавлением виртуальных хостов наводит на подозрения о проблемах с символическими ссылками
Раз нет директив, то достаточно заменить их на class_exists и не париться теперь на отслеживание, где поимел include без _once, и поиск каких-то плавающих глюкови нет в нем директив препроцессору
практика (немаленькая) показывает, что привычка оставлять без внимание непонятую проблему просто обойдя ее в большинстве случаев приводит к неприятностям.и поиск каких-то плавающих глюков
непонятных наверное не бывает, а непонятые оставлять нежелательно.непонятных
и не париться теперь на отслеживание, где поимел include без _once, и поиск каких-то плавающих глюков
Мануал с сайта http://script-info.net>Include и require идентичны во всём, кроме обработки облома.
так и написано "облома"?
это где такой мануал?
Полностью с тобой согласен.сейчас как раз автору темы усиленно советуют забить на непонятую проблему, т.к. ее легко можно избежать
Там написано:Мануал с сайта http://script-info.net
require() и include() идентичны почти во всём, за исключением того, как они обрабатывают неудачное выполнение. include() выдаёт Warning!, а require() выдаёт Fatal Error.
Как хорошо, что я могу принять значение.Обработка возвращает: можно выполнить оператор return() внутри подключённого файла, чтобы прервать обработку этого файла и возвратиться в скрипт, вызвавший его. Также можно возвращать значения из подключённых файлов. Вы можете принять значение вызова include как обычно.
Заключить куда-что-это-внутри?Поскольку include() и require() являются специальными конструкциями языка, вы обязаны заключить их в блок операторов, если это внутри условного блока.
В том то и дело, что этот мануал есть в offline версии (скачал архив и смотри без инета) - поэтому и использую.и главное - есть php.net, у него есть куча зеркал.
зачем ходить на какую-то поделку очередного студента и читать мануал ТАМ ?