Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2012, 21:23   #1
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию что возвращает Include(); не понимаю логику

Я подключаю файл (класс) которого нету.

И если такого файла нету, то глушу ошибки. Всё срабатывает но только как то по молдавски )) ..

Вот пример который успешно глушит ошибки хотя они должны быть

PHP код:
function __autoload($class){
    if(!include(
'class/'.$class.'.class.php')){
        
// done
    
} else {
        
error_reporting(0);
    }

А тут они появляются хотя их не должно быть.

PHP код:
function __autoload($class){
    if(include(
'class/'.$class.'.class.php')){
        
// done
    
} else {
        
error_reporting(0);
    }

................................... ..
Вот и не могу понять , что возвращает include при удачном подключении.
Или так вообще нельзя делать. в php 4,х,х он возвращал 1 при удачном.
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 14.04.2012, 22:01   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Да всё правильно у вас срабатывает:

1-й код ("который успешно глушит ошибки") - условие if выполняется:
PHP код:
if(подключение не произошло){
    
//работает этот блок кода - т.к. файла нет, и подключение не произошло
    //ничего не происходит
}
else{
    
//этот блок кода не выполняется
    //ошибка НЕ показывается

-------------------
2-й код ("тут они появляются") - условие if НЕ выполняется - работает else:
PHP код:
if(подключение произошло){
    
//этот блок кода не выполняется
}
else{
    
//работает этот блок кода - т.к. файла нет, и подключение не произошло
    //показываем ошибку

Andkorol вне форума Ответить с цитированием
Старый 14.04.2012, 22:35   #3
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Насколько я помню include ничего не возвращает.
Примерчик, как можно сделать:
PHP код:
    function __autoload($class) {
            include(
PATH_CLASSES.$class.'.php');
    }
    
$module ucfirst(strtolower($module));    // имя модуля, которое пришло
    
if (!is_readable(PATH_CLASSES.$module.'.php')) {
           
$module $config['defaultModule']; // модуль по умолчанию
    
}    
     new 
$module(); 

Последний раз редактировалось Gorychev; 14.04.2012 в 22:39.
Gorychev вне форума Ответить с цитированием
Старый 14.04.2012, 22:37   #4
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Да всё правильно у вас срабатывает:

1-й код ("который успешно глушит ошибки") - условие if выполняется:
PHP код:
if(подключение не произошло){
    
//работает этот блок кода - т.к. файла нет, и подключение не произошло
    //ничего не происходит
}
else{
    
//этот блок кода не выполняется
    //ошибка НЕ показывается

В том то дело что не работает правильно.

PHP код:
if(подключение не произошло){
    
//работает этот блок кода - т.к. файла нет, и подключение не произошло
    //ничего не происходит

Вот , но в теле условия нету вообще ничего.

Если не подключилось, должна быть ошибка так как это класс а в теле IF ничего не прописано , а её нету.
Почему срабатывает else {}

PHP код:
else { 
        
error_reporting(0); 
    } 
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 14.04.2012, 22:43   #5
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Цитата:
Сообщение от Gorychev Посмотреть сообщение
Насколько я помню include ничего не возвращает.
А Если это так , то вот почему скрипт срабатывает в обратном порядке .
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 14.04.2012, 22:55   #6
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Цитата:
А Если это так , то вот почему скрипт срабатывает в обратном порядке
Не знаю, я вам выдал нормальный код, вот и берите его за основу. Есть желание ковырять ваш вариант - флаг вам в руки. Если мне не изменяет мой маразм, инклюд как и подобные функции типа require ничего не возвращают. Никогда не видел подобных извратов с include
Gorychev вне форума Ответить с цитированием
Старый 14.04.2012, 23:06   #7
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Нашел , То что возвращает include нужно сравнивать со строкой .

PHP код:
function __autoload($class){
    if((include 
'class/'.$class.'.class.php') == 'string'){
        
    } else {
        
error_reporting(0);
    }

зы. Gorychev прикольный кот у тебя на сайте )
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/

Последний раз редактировалось pompiduskus; 14.04.2012 в 23:09.
pompiduskus вне форума Ответить с цитированием
Старый 15.04.2012, 00:49   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от pompiduskus Посмотреть сообщение
Нашел , То что возвращает include нужно сравнивать со строкой .
Для проверки существования файла есть функция file_exists.
Andkorol вне форума Ответить с цитированием
Старый 15.04.2012, 02:07   #9
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Да в php много чего есть ...
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не понимаю логику DOS. (резидент под win-16) Les_55 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 17 12.09.2019 11:25
Вопрос а есть статейка с #include и что в каждом используется paxan86 Общие вопросы C/C++ 2 15.12.2011 19:00
Что значит функия возвращает значение ? [iT]aNYBis Свободное общение 22 28.10.2010 03:32
Оптимизация PHP-скрипта: Что быстрее function или include? Виталий Желтяков PHP 18 08.07.2010 22:35
Что возвращает эта функция? D[I]K Общие вопросы C/C++ 9 07.10.2009 00:32