Автор Тема: Менеджер по инклуду ПХП файлов  (Прочитано 8287 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Aku Aku

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 47
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Нужен скрипт/класс который можно натравить на папку и он проинклудит все ПХП файлы что в ней есть (включая поддиректории), а уж если чего случится, то не завалится а выдасть некий еррор коде. Самому писать сейчас некогда, т.к. это скорее для удобства разработки. Можно ведь как угодно менять структуру папок с классами, добавлять новые классы и не беспокоиться чтобы их еще гдето инклудить. Короче говоря если кто такое встречал, ответьте плиз.

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Менеджер по инклуду ПХП файлов
« Ответ #1 : 08 Мая 2004, 14:42:21 »
Ты мне объясни, зачем тебе такая загогулина кодовая понадобилась...

Вот, примерный код набросал. Не проверял, но должно работать.

//Здесь первый вызов и передача первого каталога в дереве..
include_dir($_SERVER["DOCUMENT_ROOT"]);

//собственно функция
function include_dir($fromname) {
//получаем список файлов,каталогов в текущем каталоге
$d_list = array();
$d opendir($fromname);
while(
$f readdir($d)) {
array_push($d_list,$f);
closedir($d);
//проверяем каждый
foreach($d_list as $f) {
if(
$f!="." && $f!=".."):
 if(
is_dir($fromname."/".$f)):
   
//если дир - то вложенный вызов
   
include_dir($fromname."/".$f);
 else:
   
//не дир - инклудим
   //здесь проверка расширения php - если хочешь...
   
include($fromname);
 endif;
endif;
unset(
$d_list);
}

P.S.Писал специально неправильные "if:else:endif" для того, чтобы ты в скобках не запутался.
LJ: Backslashed life (rss)

Оффлайн Aku Aku

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 47
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Менеджер по инклуду ПХП файлов
« Ответ #2 : 08 Мая 2004, 14:59:38 »
принцип как это делать я знаю, твой код кстати не работает даже после добавления закрывающих скобок в циклах. Зачем мне это нужно я ж обьяснил:
Цитировать
Можно ведь как угодно менять структуру папок с классами, добавлять новые классы и не беспокоиться чтобы их еще гдето инклудить.

Меня интересует именно уже написанный класс/скрипт который можно брать и пользовать, в PEAR такого не обнаружил, может еще где есть. Если нет то напишу сам, не стоит мне давать примеры рекурсивных функций :-)

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Менеджер по инклуду ПХП файлов
« Ответ #3 : 08 Мая 2004, 15:14:42 »
Цитировать
Aku Aku:
не стоит мне давать примеры рекурсивных функций :-)

Не буду.

Цитировать
Aku Aku:
Можно ведь как угодно менять структуру папок с классами, добавлять новые классы и не беспокоиться чтобы их еще гдето инклудить.

Их что, ТАК МНОГО?

Цитировать
Aku Aku:
твой код кстати не работает даже после добавления закрывающих скобок в циклах.

Вполне возможно, т.к. я его откромсал от написанного мною скрипта, который писал около года назад. Может и откромсал что лишнее :)
LJ: Backslashed life (rss)

Оффлайн Aku Aku

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 47
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Менеджер по инклуду ПХП файлов
« Ответ #4 : 08 Мая 2004, 15:26:29 »
Цитировать
Их что, ТАК МНОГО?

около 35 классов, но не в том дело:
не хочется писать внутри каждого класса  require_once(все от которых он зависит). Или вот решил поменять структуру папок, или добавил пару классов, и не нужно править путей. Чтобы было понятно, вот как у меня выглядит index.php в проекте:


//session start, ini_set, etc.
 
require_once("includes/classes/pcof/constants.php");

//beans
require_once("includes/classes/pcof/beans/FormBean.php");
require_once(
"includes/classes/pcof/beans/Option.php");
require_once(
"includes/classes/pcof/beans/Field.php");
require_once(
"includes/classes/pcof/beans/SpawField.php");
require_once(
"includes/classes/pcof/beans/Element.php");
require_once(
"includes/classes/pcof/beans/Radio.php");
require_once(
"includes/classes/pcof/beans/Form.php");

//filter
require_once("includes/classes/pcof/filter/Condition.php");
require_once(
"includes/classes/pcof/filter/SortingOption.php");
require_once(
"includes/classes/pcof/filter/FilterDescriptor.php");
require_once(
"includes/classes/pcof/filter/Filter.php");

require_once(
"includes/classes/pcof/HttpUtils.php");
require_once(
"includes/classes/pcof/Error.php");
require_once(
"includes/classes/pcof/DBError.php");
require_once(
"includes/classes/smarty/Smarty.class.php");
require_once(
"includes/classes/pcof/ProjectSmarty.php");
require_once(
"includes/classes/pcof/AbstractAction.php");
require_once(
"includes/classes/pcof/ActionDescriptor.php");
require_once(
"includes/classes/pcof/ModuleDescriptor.php");
require_once(
"includes/classes/pcof/StaticModuleDescriptor.php");
require_once(
"includes/classes/pcof/ContainerDescriptor.php");
require_once(
"includes/classes/pcof/ProfileDescriptor.php");
require_once(
"includes/classes/pcof/ProjectDescriptor.php");
require_once(
"includes/classes/pcof/User.php");
require_once(
"includes/classes/pcof/Container.php"); 
require_once(
"includes/classes/pcof/ContainerAssistant.php");
require_once(
"includes/classes/pcof/ModuleAssistant.php");
require_once(
"includes/classes/pcof/AbstractModule.php");
require_once(
"includes/classes/pcof/StaticModule.php");
require_once(
"includes/classes/pcof/Engine.php");
require_once(
"includes/classes/pcof/ConfigParser.php");

//Get User
//...

//Get Smarty
//...

//Get DB
//...

//Get config
//...

$engine = new Engine($assistant);
$engine->handleRequest();

//Clean
$db->disconnect();


Я же не говорю, что жить не могу без такого скрипта, просто мне бы было гораздо удобнее с ним :-)

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Менеджер по инклуду ПХП файлов
« Ответ #5 : 08 Мая 2004, 15:54:37 »
Aku Aku
Вообще, такие игры с инклюдами - это не очень хороший стиль программирования.
Неужели тебе нужны ВСЕ библиотеки одновременно?
Инклюдь только необходимое, как это делает, например, Smarty.
И ничего страшного, если "необходимое" будет лежать в двадцати файлах - всяко лучше проинклюдить 20, чем 150 (или сколько их всего).
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Aku Aku

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 47
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Менеджер по инклуду ПХП файлов
« Ответ #6 : 08 Мая 2004, 16:03:28 »
Цитировать
Вообще, такие игры с инклюдами - это не очень хороший стиль программирования.

не вопрос :-)
ессно все не нужны, просто нету времени заморачиваться - все мои классы весят 50кб, так что пущай загружает. Вот проект доделаю, потом и подумаю о производительности (может быть :-))

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Менеджер по инклуду ПХП файлов
« Ответ #7 : 08 Мая 2004, 16:25:25 »
Если ты думаешь, что 50кб - это мало, то ты сильно ошибаешься.
Но дело твоё...
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Менеджер по инклуду ПХП файлов
« Ответ #8 : 08 Мая 2004, 17:39:45 »
Цитировать
FreeSpace:
Если ты думаешь, что 50кб - это мало, то ты сильно ошибаешься
[off] у меня
adodb - около 80кб
HTML_Template_Sigma - около 40кб
+ разные мелкие классы по 5 - 10 кб (мои и pear-вские)
и никаких проблем нет, даже accelerator еще не подключали :)
Хотя конечно я не подключаю все подряд, но килобайт 150-200 на один запрос скрипта наберется [/off]
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Менеджер по инклуду ПХП файлов
« Ответ #9 : 08 Мая 2004, 18:15:09 »
[OFF]150-200 кб - это вполне нормально.
Другое дело, что человек говорит "все мои классы весят 50кб" и приводит листинг с тридцатью инклюдами.
Если оценки не преувеличены, то 50 х 30 = 1500 кб.
И это уже не шутки.[/OFF]
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Aku Aku

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 47
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Менеджер по инклуду ПХП файлов
« Ответ #10 : 08 Мая 2004, 18:20:44 »
[OFF]это они все вместе столько весят :-)[/OFF]

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Менеджер по инклуду ПХП файлов
« Ответ #11 : 08 Мая 2004, 18:27:02 »
А, ну в таком случае эта проблема для тебя неактуальна.
Вот только рекурсивный инклюд директорий мне всё равно не по душе.
Разбей классы на группы по функциональному назначению, для каждой группы заведи отдельный файл .php и положи туда, куда тебе удобно будет. В этом файле иклюдь все классы, которые относятся к этой группе.
Если в скрипте нужно работать с какой-то группой классов, инклюдишь этот групповой файл и всё. Хотя можно такие классы просто в один файл объединить.
Что касается
Цитировать
Aku Aku:
Можно ведь как угодно менять структуру папок с классами, добавлять новые классы и не беспокоиться чтобы их еще гдето инклудить.

, то по-моему проблема надумана. Создай единую структуру директорий с классами и не меняй её. Это не так сложно, на самом деле.
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
Менеджер по инклуду ПХП файлов
« Ответ #12 : 08 Мая 2004, 23:20:43 »
Цитировать
Aku Aku:
потом и подумаю о производительности (может быть :-))

никогда ты про нее не подумаешь... если сильно не припечет!
[off]
извини, вопрос не по теме... а ты ядерным реактором управляешь на РНР? Ну шаблонизатор, ну доступ к БД, ну еще что-то, но не столько же 0|0
[/off]
работа в Украине

Оффлайн Aku Aku

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 47
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Менеджер по инклуду ПХП файлов
« Ответ #13 : 09 Мая 2004, 12:02:59 »
Цитировать
никогда ты про нее не подумаешь... если сильно не припечет!

мне кажется эта совершенно отдельная тема, когда и сколько заботиться о производительности. И тут дофига разных факторов.

[OFF]
насчет реактора, честно говоря, не понял. Чего столько? 35 классов общим весом 50кил это много? Или ты о чем то другом?
[/OFF]

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Менеджер по инклуду ПХП файлов
« Ответ #14 : 10 Мая 2004, 11:34:26 »
Цитировать
Aku Aku:
Самому писать сейчас некогда,

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28