Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Функция проверки и инклюдинга файла. Нужна помощь
Поскольку include вызывается из тела функции, то код из файла $file будет вставлен и выполнен внутри функции. Т.е. переменная $temp, оределенная в файле 1.php будет видна только внутри функции
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Вы можете использовать для Вашего скрипта директиву global. Тогда не будет Notice и сработает изменение переменной. Я, однако, рекомендовал бы Вам возвращать значения изменяемых переменных. Вариант с global:
die("<b>Include Error:</b> file ".$file." not found");
};
$temp="";//инициализируем переменную - я лично, это рекомендую делать всегда.
inc('1.php');
echo$temp;
?>
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Devoll
Отправлено: 18 Октября, 2007 - 13:15:09
Новичок
Покинул форум
Сообщений всего: 59
Дата рег-ции: Июль 2007
Помог: 0 раз(а)
Вводить переменные в глобал хорошо когда переменных немного и знаешь названия переменных, а как быть когда таких переменных много и названия не знаешь? (эту функцию хотел использовать для подключения дополнительных скриптов)
EuGen
Отправлено: 18 Октября, 2007 - 13:19:23
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Хм.. если Вы не знаете названия переменных, как же Вы их в Вашем основном скрипте собираетесь использовать? То есть, допустим, даже если бы и сработало без global и Вам не нужно было бы его писать в функции, как бы Вы переменные с неизвестными именами стали использовать в скрипте после функции?
Имена можно сделать и
.. так что Вам в любом случае надо себе в этом случае четко представлять, что делается внутри подключаемого скрипта.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Devoll
Отправлено: 18 Октября, 2007 - 13:23:47
Новичок
Покинул форум
Сообщений всего: 59
Дата рег-ции: Июль 2007
Помог: 0 раз(а)
Тогда буду ручками к каждому файлу делать проверку. Представьте когда таких переменных свыше 20 штук и эта цифра с каждым разом будет расширяться. Спасибо за ответ.
EuGen
Отправлено: 18 Октября, 2007 - 13:37:47
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Существует, однако способ, сделать это по-другому (только для глобальных переменных, если у Вас в файлах будут какие-либо локальные переменные, они таким образом не учтутся):
if(!in_array($k_var,$G_VARS))//такой переменной раньше не было
echo('переменная с именем $'.$kvar.' равна'.$GLOBALS[$kvar]."\\n");//ну или какие-нибудь другие действия
};
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
valenok
Отправлено: 18 Октября, 2007 - 15:29:48
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
@ include('1.php');
1. Какого чёрта вы нас заставили качать свой файл.рар если всё что внутри вы уже давно написали.
2. А ведь даже если файла нет вы же пытаетесь вывести переменную $temp. Тоесть вы не проверяете её существование. Тогда первая строчка сообщения как раз для вас.\n\n(Добавление)
А вразумите в каком случаем может потребваться такая конструкция?
Вы так подобие динамических модулей пишете ?
----- Truly yours, Sasha.
EuGen
Отправлено: 18 Октября, 2007 - 15:33:17
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
valenok - тут есть тема, про то, что нужно скрипты из базы запускать - если честно, большего извращения в жизни не видел ((* ... так что всего скорее, это неправильное решение исходной задачи ((*
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Devoll
Отправлено: 18 Октября, 2007 - 18:43:15
Новичок
Покинул форум
Сообщений всего: 59
Дата рег-ции: Июль 2007
Помог: 0 раз(а)
Повторюсь: то, что я вам написал, является скрипт, который должен будет подключать модули, написанные сторонним разработчиком.
Вобщем-то я сделал немного по-другому: забиваю название файлов, которые надо подключить в массив, а далее прогоняю этот массив и проверяю на существование файлов.
valenok
Отправлено: 18 Октября, 2007 - 20:07:40
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
читам папку readdir'om и каждый файл подключаем
----- Truly yours, Sasha.
Devoll
Отправлено: 18 Октября, 2007 - 22:33:51
Новичок
Покинул форум
Сообщений всего: 59
Дата рег-ции: Июль 2007
Помог: 0 раз(а)
Я думал над этим, но удобнее в данной ситуации сделать как у меня ибо защищает от случайного подключения ненужных файлов, да и важна так же последовательность подключаемых файлов + некоторые файл подключать не требуется, ибо произойдет зацикливание (в одном файле реализуется подключение других файлов), но все это можно учесть, но на это уйдет много строчек кода.
valenok
Отправлено: 18 Октября, 2007 - 23:12:17
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
На это не должно уйти больше пяти минут правильной структуризации каталогов
и +2 лишних строки
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.