include() php
$includes_dir = opendir($path);
while (($inc_file = readdir($includes_dir)) != false )
if (strstr($inc_file,".php"))
{
include($path."/".$inc_file);
}
все работает.
как только выношу в отдельную функцию
{
$includes_dir = opendir($path);
while (($inc_file = readdir($includes_dir)) != false )
if (strstr($inc_file,".php"))
{
include($path."/".$inc_file);
}
}
incAllPhp("./includes");
не работает.
В чем проблема?
причем в одном и том же файле делаю, на пути как то не свалишь...
Например воттак работать не будет
1.php:
[highlight=php]
<?
$a=1;
?>
[/highlight]
2.php:
[highlight=php]
<?
function incl() {
include "1.php";
}
incl();
echo $a;
?>
[/highlight]
Переменная $a вне области видимости.
Потом чуто если инклудить в функции, то код будет вести себя так, как буд-то он обьявлен в функции... Т.е. либо меняк код в инкулднутых файлах, либо пиши свой инкулуд, который будет оперировать не с одним, а со многимим файлами
Например воттак работать не будет
...
Переменная $a вне области видимости.
а так?
1.php
global $a;
?>
2.php
$a = 10;
?>
3.php
include '1.php';
include '2.php';
echo $a;
?>
тут то что не так? уж совсем ведь просто кажеться?
п1. Описание проблемы
п2. Что сделал для её решения
п3. Для чего это нужно (в 95% возможно предложить более элегантное решение).
а если сделать так:
allInclude.php
[highlight=php]
$includes_dir = opendir($path);
while (($inc_file = readdir($includes_dir)) != false )
if (strstr($inc_file,".php"))
{
include($path."/".$inc_file);
}
[/highlight]
И теперь там где надо, делаем:
[highlight=php]
$path='neededDir';
include "allInclude.php";
[/highlight]
PS Напомню, PHP хоть и язык немного унылый, но там есть такие вещи как функции и классы и их можно использовать ;)
Я тож уверен, что как-то можно по другому делать без инклудов, но раз человек хочет инклуды - то пожалуйста...
PS Напомню, PHP хоть и язык немного унылый, но там есть такие вещи как функции и классы и их можно использовать ;)
Wow! Да Неужели?
Слушайте, уже хоть чтото предложили бы более дельное, чем критика? Есть задача, как ее решить пока никто кроме Вульфа не помог, про "более изящьный вариант" уже вообще молчите...
2SibBear Ты не поверишь, но сейчас максимальная польза для тебя, это не помочь говно написать, а отговорить от этого и показать другие варианты решения. Если ты этого не хочешь, то "метод великого китайского тыка" тебе в помощь...
PS Кстати, он и правда великий, если посмотреть на их популяцию )
справа выводится меню $left_menu (Array)
количество пунктов не задано
есть папка includes в которой неопределенное количество подпапок со своими кодами и шаблонами к каждому новому пункту меню.
в корне каждой папки лежит файл
inc_1.php (к примеру)
global $left_menu;
$left_menu[] = "Новый пункт меню";
?>
Вот я и химичу, как мне это все пробежать и прочитать меню из всех inc_***.php
очень отдаленное подобие модулей.
сейчас они заработали благодаря global $left_menu;
есть более рациональное решение?
Шаблоны(темплейты) хранить в БД?
Ну можно и шаблоны хранить, но вообще я имел ввиду информацию о пунктах меню.
Грубо говря модули...
ИМХО, тут Симфони или Зенд лучше уже заюзать...
Грубо говря модули...
ИМХО, тут Симфони или Зенд лучше уже заюзать...
Зачем? Чтобы заинклюдить еще пару мегабайт РНР кода? Тут все решается в несколько десятков строк и функцией str_replace.
И кстати, хотел вот что уточнить. "говнокод" это инклюд впринципе, или реализация поиска кучи инклюдов в папке и всех подпапках?
Я хочу сделать немного подругому. Я не знаю заданное кол-во инклюдов, но знаю, что в этих инклюдах обязательно. Это языковой пакет, шаблон (+м.б. свои функции).
Как вариант:
в папке include/some_inc/
обязательный файл config.php
$list_menu[] = "пункт меню";
include ('lang/rus.php');
соответственно пройдя только по config.php все остальное подцепится само...
вариант?
Говнокод - это решение простой проблемы сложным, некрасивым, непродуманным и неэффективным способом. Хотя гораздо чаще и сама проблема поставлена неверно.
Есть даже соответствующий ресурс - коллекция подобных творений - govnokod.ru
Этим грешат все начинающие программисты, а иногда даже и опытные (особенно если нужно сделать что-то очень быстро и последствия мало заботят). Но опытным простительно, тк они знают в большинстве своем как НАДО делать. А начинающие других способов не знают и им нужно на это указывать.