Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Модульное программирование на PHP


Автор: Enya 17.10.2006, 08:51
В своё время когда только начинала интересоваться PHP и CMS, совершенно случайно напоролась на этот урок
http://addzone.ru/files/id/57
Хочу спросить ваше мнение по этому уроку. 
Может моежно как-то доработать или модифицировать этот минидвижок?

Автор: Eugene_Bond 17.10.2006, 09:04
ИМХО, в таком виде этот "движок" годится только в топку..

Добавлено @ 09:07 
Собственно как и остальные статьи с данного сайта...
Один код "Автоматизации управления домашней странички" чего стоит:

Код

<?php
$gal="-up.txt";
$ftt=fopen($gal,"r");
$att=file($gal);
$attc=count($att);
fclose($ftt);
For ($n=0;$n<$attc;$n++) print($att[$n]);
?>
Здесь ваш текст
<?php
$gal="-down.txt";
$ftt=fopen($gal,"r");
$att=file($gal);
$attc=count($att);
fclose($ftt);
For ($n=0;$n<$attc;$n++) print($att[$n]);
?>

Автор: Enya 17.10.2006, 09:23
Eugene_Bond, я не предлагаю обсуждать остальные статьи с этого сайта. Меня интересует конктретный движок.
Код

Один код "Автоматизации управления домашней странички" чего стоит:
это не из этой оперы. Смотри внимательнее ссылку.

И почему в топку? smile работает не плохо.

Автор: pythonwin 17.10.2006, 09:57
Enya, посмотри http://zope.org/ - этот веб-сервер позволяет подобное. smile

Автор: albertn 17.10.2006, 10:56
Честно говоря я бы не назвал построение сайта данным образом корректным, т.к. Нет никакой связи между модулями, никакого интерфейса нет вообще.
На сколько я понял выбор заголовка, и всех дополнительных параметров в шапку делает index.php, и мод не может сам выбрать себе заголовок, или ему тогда просто придется самому заново переписывать все описания из index.php.
В общем тупо и безсмысленно.

Собсно как сказал pythonwin, это действительно очень похоже на структуру DTML в Zope, но там все построено по уму, все генерируется изходя из контекста, а не просто влоб.
Кстати стандартный пример на DTML:
Код

<dtml-var standard_html_header>
<h2><dtml-var title_or_id></h2>
<p>
This is the <dtml-var id> Document.
</p>
<dtml-var standard_html_footer>

Автор: PARROT 17.10.2006, 14:07
Enya, я использую этот движек, но он дописан. 

Автор: pythonwin 17.10.2006, 14:32
Цитата(PARROT @  17.10.2006,  21:07 Найти цитируемый пост)
Enya, я использую этот движек, но он дописан.  

а код показать можешь?

Автор: PARROT 17.10.2006, 14:35
В общем-то все тоже самое, только дописано для титлов, метатегов. 
Для автоматической генерации. 

Автор: Enya 17.10.2006, 14:47
PARROT, да я бы тоже взгянула бы на дописанную часть.

У меня вот такой вопрос. Мне приходилось использовать это движок, и нужно было в скрипте воспользоваться функцией 
Код

header(Location: );

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

Так вот , я сделала фаил mod001.php (там просто выводиться текст и ссылочка). Ну мол по идеи должно было переадрисоваться на этот модуль, благодаря этой функции, а он нет, выдовал что страница не найдёна и т.д. пришлось делать отдельным большим куском регистраци и отдельным куском файл для ошибки, так как переслаться на конкретный модуль с помощью 
Код

header(Location: );
не вышло..
может чего посоветуете?

Автор: PARROT 17.10.2006, 15:07
Ну я добавила в движок еще один файл title.php , там из базы выдергиваю титлы , и меты.
Вверху каждого файла я присвоила номер модуля по умолчанию:
Код

define('MOD', '1'); 

Больше ничего. Кстати тема была тут на форуме, можно поискать в поиске.

Добавлено @ 15:09 
http://forum.vingrad.ru/index.php?showtopic=103941

Автор: PARROT 17.10.2006, 15:11
Ну плюс еще написали мы с USTAS мод-реврайт.

Автор: AztEK 18.10.2006, 06:42
Может быть, я не прав, но модульность скриптов - это очень личный вопрос, с которым нужно самому поразбираться.
Реализаций масса, объяснять конкретный способ долго и неинтересно  smile .

P.S. Мне тоже не хватает namespace, приходится выкручиваться (программисты на C++ поржали бы наверное).

Автор: sergejzr 19.10.2006, 14:06

M
sergejzr
Напиминаю, что даже предложения "написать на другом языке, потому что лучше" являются как правило началом религиозной войны.

Разделил тему. http://forum.vingrad.ru/index.php?showtopic=117221.

Автор: Enya 20.10.2006, 13:28
Нет, ну вас конечно понесло по кочкам. Но может кто-нибудь из вас видел нечто подобное? или есть ещё какие-нибудь примеры построения сайта на модулях?

Автор: pythonwin 20.10.2006, 13:45
Цитата(Enya @  20.10.2006,  20:28 Найти цитируемый пост)
Нет, ну вас конечно понесло по кочкам. Но может кто-нибудь из вас видел нечто подобное? или есть ещё какие-нибудь примеры построения сайта на модулях? 

посмотри 
  •  Zope.org
  •  Typo3.org

Автор: Enya 5.11.2006, 17:31
Блин, что за ошибка? Решила построить маленький свой сайтик.
Вот взяла вот эту модульную систему.
Так мне не удаётся вызвать модуль.
Пишет вот:
Цитата

Notice: Undefined variable: PHP_SELF in y:\home\ldo.net\www\mods\mod1.php on line 2
Access denied
А вот  это условие с этой переменной.
Код

if (!eregi("index.php", $PHP_SELF)) { die ("Access denied"); }
У меня дома ДЕНВЕР. PHP 5. Может эта модульная система не оптимизированная под PHP 5?

Автор: Wolf1994 5.11.2006, 17:57
Попробуйте:
Код

if (!eregi("index.php", $_SERVER ['PHP_SELF'])) die ("Access denied");

Автор: Enya 5.11.2006, 18:14
Wolf1994, работает.

Автор: CyClon 5.11.2006, 18:17
Вообще, не нравится стиль написания кода в уроке и сама структура/код местами тоже. Поэтому мнение отрицательное smile))

Добавлено @ 18:19 
К примеру...

Код
if (!eregi("index.php", $_SERVER ['PHP_SELF'])) die ("Access denied");


Тут лучше использовать константы... То есть, в файле index.php:

Код
define('KERNEL', 1);


В файле для подключения:

Код
if (!defined('KERNEL')) exit;

Автор: SelenIT 5.11.2006, 19:41
Enya, вообще, конечно, пример для начала Вам попался действительно неудачный:
  • прежде всего, он безнадежно устарел - он рассчитан еще на работу с register_globals=on, как во времена PHP < 4.1;
  • передавать имя реального файла может быть небезопасно;
  • по большому счету, этот пример не иллюстрирует преимуществ модульности, т.к. еще неизвестно что удобнее - иметь один index.php, куда инклюдится все на свете (отсюда - куча проверок, что в какой ситуации выводить) либо набор отдельных файлов типа news.php, guestbook.php и т.п., отвечающих только за свою функциональность и инклюдящие при необходимости общие вещи (те же config.php, dbconnect.php, header/footer/menu.php...) - по крайней мере, Вашу проблему с header-редиректом явно проще решить вторым вариантом.

Так что развивать/дорабатывать этот "движок" я Вам решительно не советую. Лучше начните с того, что в Вашей системе должны представлять собой модули - полностью независимые скрипты, фрагменты страницы, наборы данных с шаблоном оформления или что-то еще. В каждом случае будет свой оптимальный вариант реализации.

Автор: Goganchic 22.5.2007, 14:18
Господа, раз уж все так яростно осуждаю данный двиг, может тогда собраться всем вместе и написать некий небольшой движок-пример с модульной структурой? Я бы может тоже принял в этом участие.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)