Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

include() php

396
24 октября 2010 года
SibBear
223 / / 27.07.2006
есть код

 
Код:
$path = "./includes";

    $includes_dir = opendir($path);

    while (($inc_file = readdir($includes_dir)) != false )
        if (strstr($inc_file,".php"))
        {
            include($path."/".$inc_file);
        }

все работает.
как только выношу в отдельную функцию

Код:
function incAllPhp($path)
{
    $includes_dir = opendir($path);

    while (($inc_file = readdir($includes_dir)) != false )
        if (strstr($inc_file,".php"))
        {
            include($path."/".$inc_file);
        }
}

incAllPhp("./includes");


не работает.

В чем проблема?
причем в одном и том же файле делаю, на пути как то не свалишь...
285
24 октября 2010 года
Romik
479 / / 24.11.2002
Что именно не работает?
244
24 октября 2010 года
UAS
2.0K / / 19.07.2006
При ненахождении файла при include должно выводиться предупреждение, если использовать require, то будет фатальная ошибка. Если у вас ничего не выводится, значит выключены сообщения об ошибках, надо включить (error_reporting).
274
24 октября 2010 года
Lone Wolf
1.3K / / 26.11.2006
а что не работает, не инклудится? что у тебя в фалйах что инклудится?
Например воттак работать не будет
1.php:
[highlight=php]
<?
$a=1;
?>
[/highlight]
2.php:
[highlight=php]
<?
function incl() {
include "1.php";
}
incl();
echo $a;
?>
[/highlight]

Переменная $a вне области видимости.
396
24 октября 2010 года
SibBear
223 / / 27.07.2006
мне нужна функция которая будет инклудить все php файлы в разных категориях, их может быть много, в каждом php свой код со своими переменными. Как это сделать не могу понять, категорий много и на каждую приходится вставлять большой кусок кода...
274
24 октября 2010 года
Lone Wolf
1.3K / / 26.11.2006
я понимаю что тебе нужно, вопрос стоит в том какой код выполняется в инклуднутых файлах.
Потом чуто если инклудить в функции, то код будет вести себя так, как буд-то он обьявлен в функции... Т.е. либо меняк код в инкулднутых файлах, либо пиши свой инкулуд, который будет оперировать не с одним, а со многимим файлами
13
25 октября 2010 года
RussianSpy
3.0K / / 04.07.2006
Зачем вообще такая зоофилия нужна?
1.9K
25 октября 2010 года
Werky
129 / / 14.01.2006
Попробуйте указывать асолютный а не относительный пути.
396
27 октября 2010 года
SibBear
223 / / 27.07.2006
Цитата: Lone Wolf
а что не работает, не инклудится? что у тебя в фалйах что инклудится?
Например воттак работать не будет
...
Переменная $a вне области видимости.



а так?

1.php

 
Код:
<?
 global $a;
?>


2.php
 
Код:
<?
 $a = 10;
?>


3.php
 
Код:
<?
 include '1.php';
 include '2.php';
echo $a;
?>

тут то что не так? уж совсем ведь просто кажеться?
274
27 октября 2010 года
Lone Wolf
1.3K / / 26.11.2006
не ну так, кончено подхватится, но это не вариант, как по мне...
15
27 октября 2010 года
shaelf
2.7K / / 04.05.2005
Мне кажется нужно правило новое для постов ввести )
п1. Описание проблемы
п2. Что сделал для её решения
п3. Для чего это нужно (в 95% возможно предложить более элегантное решение).
274
27 октября 2010 года
Lone Wolf
1.3K / / 26.11.2006
хм..
а если сделать так:
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]
15
27 октября 2010 года
shaelf
2.7K / / 04.05.2005
Народ, хватит извращаться)))
PS Напомню, PHP хоть и язык немного унылый, но там есть такие вещи как функции и классы и их можно использовать ;)
274
27 октября 2010 года
Lone Wolf
1.3K / / 26.11.2006
ну почему сразу извращатся..?
Я тож уверен, что как-то можно по другому делать без инклудов, но раз человек хочет инклуды - то пожалуйста...
15
27 октября 2010 года
shaelf
2.7K / / 04.05.2005
Может многие хотят глаз в зад себе засунуть, ты тоже будешь показывать как это сделать?)
396
27 октября 2010 года
SibBear
223 / / 27.07.2006
Цитата: shaelf
Народ, хватит извращаться)))
PS Напомню, PHP хоть и язык немного унылый, но там есть такие вещи как функции и классы и их можно использовать ;)



Wow! Да Неужели?
Слушайте, уже хоть чтото предложили бы более дельное, чем критика? Есть задача, как ее решить пока никто кроме Вульфа не помог, про "более изящьный вариант" уже вообще молчите...

13
28 октября 2010 года
RussianSpy
3.0K / / 04.07.2006
Вы сначала расскажите зачем вам инклюдить столько файлов, а мы уже предложим какие-то варианты. А пока что это выглядит как "форум спешит на помощь в написании говнокода".
15
28 октября 2010 года
shaelf
2.7K / / 04.05.2005
2RussianSpy я думаю даже напрягаться не стоит)) всегда забавляла категория людей, которые не понимают, что на своём стоять больно.
2SibBear Ты не поверишь, но сейчас максимальная польза для тебя, это не помочь говно написать, а отговорить от этого и показать другие варианты решения. Если ты этого не хочешь, то "метод великого китайского тыка" тебе в помощь...

PS Кстати, он и правда великий, если посмотреть на их популяцию )
396
28 октября 2010 года
SibBear
223 / / 27.07.2006
Есть index.php
справа выводится меню $left_menu (Array)
количество пунктов не задано
есть папка includes в которой неопределенное количество подпапок со своими кодами и шаблонами к каждому новому пункту меню.

в корне каждой папки лежит файл
inc_1.php (к примеру)
 
Код:
<?php
   global $left_menu;
   $left_menu[] = "Новый пункт меню";
?>


Вот я и химичу, как мне это все пробежать и прочитать меню из всех inc_***.php
очень отдаленное подобие модулей.

сейчас они заработали благодаря global $left_menu;
есть более рациональное решение?
274
28 октября 2010 года
Lone Wolf
1.3K / / 26.11.2006
а по другому все реализовать можно? Или ты готовый продукт модифицируешь?
396
28 октября 2010 года
SibBear
223 / / 27.07.2006
ну тут от инклюдов вроди как отговаривают, вот я и хочу узнать, как подругому реализовать...
13
28 октября 2010 года
RussianSpy
3.0K / / 04.07.2006
Есть такое изобретение, ну такое маленькое и почти никому не нужное, но тебе может помочь. Называется Базы Данных.
274
28 октября 2010 года
Lone Wolf
1.3K / / 26.11.2006
Цитата: RussianSpy
Есть такое изобретение, ну такое маленькое и почти никому не нужное, но тебе может помочь. Называется Базы Данных.



Шаблоны(темплейты) хранить в БД?

13
28 октября 2010 года
RussianSpy
3.0K / / 04.07.2006
Цитата: Lone Wolf
Шаблоны(темплейты) хранить в БД?



Ну можно и шаблоны хранить, но вообще я имел ввиду информацию о пунктах меню.

274
28 октября 2010 года
Lone Wolf
1.3K / / 26.11.2006
так как я поянл в инклудах шаблоны страниц, что открываются через меню.
Грубо говря модули...

ИМХО, тут Симфони или Зенд лучше уже заюзать...
13
28 октября 2010 года
RussianSpy
3.0K / / 04.07.2006
Цитата: Lone Wolf
так как я поянл в инклудах шаблоны страниц, что открываются через меню.
Грубо говря модули...

ИМХО, тут Симфони или Зенд лучше уже заюзать...



Зачем? Чтобы заинклюдить еще пару мегабайт РНР кода? Тут все решается в несколько десятков строк и функцией str_replace.

396
28 октября 2010 года
SibBear
223 / / 27.07.2006
можно и в базе хранить, если знаешь, что хранить. Количество инклюдов изначально неизвестно. Даже, чтобы распихать их по базе, чтобы потом выбирать по клику на меню, их надо выбрать, определить, и считать хотябы их опознавательные знаки по которым их в базу уже пихать...

И кстати, хотел вот что уточнить. "говнокод" это инклюд впринципе, или реализация поиска кучи инклюдов в папке и всех подпапках?
285
28 октября 2010 года
Romik
479 / / 24.11.2002
Универсальная реализация поиска подлкючаемых файлов делеко не лучшая идея. В каждом файле вы должны знать что именно происходит, а не полагаться на какое-то волшебное решение. Это необходимо для решения вопросов отладки и поддержки.
396
28 октября 2010 года
SibBear
223 / / 27.07.2006
Ну тут не совсем "универсальная", всетаки мы не подключаем лишь бы что... Всеравно известен ряд правил..

Я хочу сделать немного подругому. Я не знаю заданное кол-во инклюдов, но знаю, что в этих инклюдах обязательно. Это языковой пакет, шаблон (+м.б. свои функции).
Как вариант:

в папке include/some_inc/
обязательный файл config.php
 
Код:
$global $list_menu;

 $list_menu[] = "пункт меню";
 include ('lang/rus.php');

соответственно пройдя только по config.php все остальное подцепится само...

вариант?
13
28 октября 2010 года
RussianSpy
3.0K / / 04.07.2006
Цитата: SibBear
И кстати, хотел вот что уточнить. "говнокод" это инклюд впринципе, или реализация поиска кучи инклюдов в папке и всех подпапках?


Говнокод - это решение простой проблемы сложным, некрасивым, непродуманным и неэффективным способом. Хотя гораздо чаще и сама проблема поставлена неверно.
Есть даже соответствующий ресурс - коллекция подобных творений - govnokod.ru

Этим грешат все начинающие программисты, а иногда даже и опытные (особенно если нужно сделать что-то очень быстро и последствия мало заботят). Но опытным простительно, тк они знают в большинстве своем как НАДО делать. А начинающие других способов не знают и им нужно на это указывать.

15
29 октября 2010 года
shaelf
2.7K / / 04.05.2005
Мне вот интересно будет, а что если я параметром в такую систему передам index.php?list_menu=12 ? :)) Мне кажется эта "умная" система поперхнётся)
396
29 октября 2010 года
SibBear
223 / / 27.07.2006
А кто эту $_GET['list_menu'] считывать будет? она ее просто пропустит за ненадобностью и усе...
15
29 октября 2010 года
shaelf
2.7K / / 04.05.2005
Не использовал её лет 5, забыл откуда вытаскивает, виноват. Дискусию вести тоже устал, в интернете и без меня много написано про всякие global
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог