require - проверка на ошибку

Эдди

Новичок
require - проверка на ошибку

Нет какого-нибудь простого способа проверить, найден ли подключаемый файл?
or die или if не работают.

Только до того проверить файл экзистс?

Спасибо.
 

fixxxer

К.О.
Партнер клуба
include и ловить варнинг.

file_exists кстати не совсем сработает, ибо require/include смотрят include path.
 

Эдди

Новичок
Автор оригинала: fixxxer
include и ловить варнинг.

file_exists кстати не совсем сработает, ибо require/include смотрят include path.
На самом деле я require_once испльзую почти всегда. С ним так же?
 

pilot911

Новичок
require отличается от include тем, что если файл не найден, то require генерирует фатальую ошибку, в отличие от include

проверять можно так

PHP:
if ((include 'vars.php') == 'OK') {
    echo 'OK';
}
 

Эдди

Новичок
Автор оригинала: pilot911
require отличается от include тем, что если файл не найден, то require генерирует фатальую ошибку, в отличие от include

проверять можно так

PHP:
if ((include 'vars.php') == 'OK') {
    echo 'OK';
}
Оба -(
А почему он ОК должен дать?:):):)
Он и на true не реагирует...
 

fixxxer

К.О.
Партнер клуба
бгага. еще бы == 'хрен' проверяли :)

-~{}~ 18.05.10 16:01:

а проверять надо оборачивая php-ошибки в исключения. вообще нет ни одной разумной причины НЕ оборачивать их все поголовно в исключения.
 

Эдди

Новичок
В итоге делаю так:
if(include_once('file.php'))
$x=1;
else
echo 'не фига не получилось';

А проще как? Убрать строку 'что-то делаю, если все ок'?
 

fixxxer

К.О.
Партнер клуба
там варнинг будет если "не получилось", тебе мало?
 

Dovg

Продвинутый новичок
Эдди
>if(include_once('file.php'))
так нельзя. В file.php может быть в конце написано return false; в этом случае твой код напишет, что нифига не получилось.

>а проверять надо оборачивая php-ошибки в исключения.
+1

будет что-то похожее на

PHP:
try {
  include 'file.php';
} catch (Exception $e) {
  echo 'не фига не получилось';
}
Тут только один минус - такая конструкция будет глотать исключения и внутри file.php, что нежелательно.
 

Эдди

Новичок
Автор оригинала: Dovg
Эдди
>if(include_once('file.php'))
так нельзя. В file.php может быть в конце написано return false; в этом случае твой код напишет, что нифига не получилось.

>а проверять надо оборачивая php-ошибки в исключения.
+1
ПОчему же? Приведенные мной 4 строки корректно работают в обоих случаях.
Никакого return там нет.

А Понял... Все. Спасибо...
 

fixxxer

К.О.
Партнер клуба
Если очень хочется проверить не подключая, смотри кривой способ через @fopen в автолоадере зенд фреймворка. :)
 

Эдди

Новичок
Автор оригинала: fixxxer
Если очень хочется проверить не подключая, смотри черезжопный способ через @fopen в автолоадере зенд фреймворка. :)
Неее:) Буду проверять на ошибку.

Спасибо всем...:)

Вообще слишком много способов дано для решения одной задачи. В этом и есть кривизна системы.
Право выбора, понимаешь:)
И сам вини себя, если не то выбрал...:)
 

Фанат

oncle terrible
Команда форума
И никто не спросил юного гения, что за инклюды такие, что понадобилось их отлавливать
 

Эдди

Новичок
Автор оригинала: *****
И никто не спросил юного гения, что за инклюды такие, что понадобилось их отлавливать
Ну, твое амплуа никто не отменял.:)

Основной файл подключает содержимое в зависимости от переданной гетом переменной.
Потому и хотелось отследить ошибку, раз зависит от переданной переменной.

include/require('file'.$_REQUEST['var'].'.inc.php); примерно так.
 
Сверху