Модульное программирование на PHP или как написать маленький портал. Поклажа. PHP Порталы

Вступление

Благодарю Вас за посещение и использование портала сайт. Надеюсь, что информация, которая представлена на портале, будет Вам полезна.

Назначение, цели и задачи проекта

Целью создания проекта сайт было желание удовлетворить потребность начинающих веб-программистов в интернет-ресурсе с богатым тематическим содержанием. Сейчас портал сайт способен практически полностью удовлетворить потребности начинающих программистов языка PHP в материалах по PHP, MySQL, в необходимых вспомогательных инструментах, таких как редакторы PHP кода и сопутствующие утилиты для PHP, справочнике по функциям PHP на русском языке, системы поиска необходимой информации, форуме разработчиков и.т.п.
Продвинутые и профессиональные веб-программисты, несомненно, также найдут для себя полезную информацию на портале сайт.

Краткая история проекта

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

В марте 2005 года я приобрел домен сайт с целью воплощения своих идей по созданию крупнейшего специализированного сайта по языку PHP и веб-технологиям.
Накопленной мною информации, программ и ресурсов было недостаточно для создания полноценного и содержательного информационного ресурса. Поэтому я решил продолжать накапливать информацию, параллельно изучая PHP, MySQL и веб-технологии. Для меня это был процесс обучения, при этом постепенно создавался достаточно содержательный информационный ресурс. Из-за недостатка времени процесс моего обучения языку PHP, а значит и создание сайта, затянулся на несколько месяцев.

Таким образом, постепенно, к концу апреля 2006 года, был сформирован уже действительно полноценный портал по PHP, MySQL и связанным веб-технологиям.

Развитие портала

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

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

Если у Вас возникли некоторые идеи или пожелания, поделитесь ими, воспользуйтесь

Я попытаюсь тут разъяснить то, как я подхожу к написанию сайтов, где могут применять подключаемые модули. Пример тому известный скрипт PHPNuke. Как бы не ругали его, подход, примененный в нем, к модульному программированию очень удобен. Но из-за корявости общего кода применять такой скрипт на серьезных сайтах, точнее скажем порталах, с большим количеством посетителей, не рекомендуется. Почему? Скрипт работает медленно, очень большая нагрузка на базу данных. Можно еще очень много чего описать, но это уже материал для другой статьи. Если кому интересно, то в интернете полно описаний этого движка. В <неудобоваримости> PHPNuke я убедился сам. Мой основной проект NVIDIA BIOS Collection в начала базировался на PHPNuke, но постоянные проблемы с хостингом заставили меня начать разработку своей система портала с нуля. Из PHPNuke я взять только суть модулей, все остальное же делал сам. И так для начала. Прежде всего, надо продумать систему каталогов, что и где будет лежать. Вот примерный вариант.

* /mods/ — каталог для хранения модулей
* /img/ — картинки
* /include/ — каталог вспомогательных файлов

Это что нам сейчас пока надо. Применять блоки и скины мы пока не будем. В моем портале также были другие каталоги

* /blocks/ — Тоже своего рода модули, но не выводящие сами информацию, а возвращающие заполненную переменную.
* /js/ — каталог для Java скриптов
* /theme/ — каталог выбора тем или, грубо говоря, набор скинов для сайта.
* /files/ — файлы для скачивания

ну и другие каталоги.

В корневом каталоге храниться всего один файл index.php и вся работа идет через него. Теперь надо решить как будет выглядеть сам сайт. Для нашего примера подойдет наипростейший вариант дизайна, верх сайта, низ сайта, а в середине наша информация из модулей. Для этого в каталоге include создадим два файла top.php и bottom.php, что соответственно будет верхней частью дизайна и нижней частью дизайна.

$PAGE_TITLE

здесь выводится шапка

Меню сайта

- Модуль1
- Модуль2

"; ?>

Предвижу комментарии, где скажут, почему я не вывожу HTML код отдельно, а php отдельно. Я приучил себя к написанию 100% PHP кода, с одной стороны не очень и красиво может выглядеть, но мне так удобнее. Если кто-то хочет писать по-другому, то тут я не советчик. Заметьте переменную $PAGE_TITLE в top.php. В моей реализации вся информация о модулях храниться в базе данных, где помимо имени файла модуля храниться также и его название, которое потом и кладется в $PAGE_TITLE, для вывода его в головок браузера.

"; ?>

Также создадим файл конфигурации config.php и положим его в каталог include.

Вот примерная схема работы index.php

Теперь создадим два файла mod1.php и mod2.php и положим их в каталог mods.

"; echo "А здесь можно посмотреть на модуль номер 2"; ?> mod2.php "; echo "А здесь можно посмотреть на модуль номер 1"; ?>

Поясню немного вот эту строку

if (!eregi("index.php", $PHP_SELF)) { die ("Access denied"); }

В каждый модуль желательно включать такую проверку во избежании вызова файла модуля вне самого index.php. На примере моего портала до вызова модуля у меня идет подключение в базе данных, считывание некоторых глобальных переменных и без них, ни один модуль сам по себе работать не сможет. Так что лучше всего просто запретить вызов модуля напрямую. Вызов модулей в данном случае производится через строку в виде index.php?mod=имя модуля, но тут можно применить и систему ЧПУ. Тогда URL примет вид index.php/имя модуля/

Вот в принципе очень грубая схема реализации модулей. Можно добавить любой модуль, просто положив его в каталог mods/ и придерживаясь общей концепции работы, построить очень сложный сайт. В чем удобства работы? По сути вы отодвигаете от себя основную заботу по натягиванию кода на дизайн. Это делает один раз в index.php. Сам же модуль должен только работать и приносить пользу. Централизация сбора основной информации из базы или конфигурационного файла, глобальные переменные сайта, информация о пользователе и т.д. С другой стороны есть недостатки (хотя при определенном взгляде они не кажутся недостатками), скажем надо четко следить за тем какие имена переменных используются до модуля, чтобы не перезаписать, случайно, их внутри модуля. Один раз у меня такое случилось. После такого случая, я взял для себя за правило называть системные переменные в таком виде $sys_имя переменной. Другой очевидный недостаток это трудность реализации разных вариантов дизайна для разных модулей. Но! Тут есть выход тоже.

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

К примеру, наши простые модули можно модифицировать в таком варианте.

"; echo "А здесь можно посмотреть на модуль номер 2"; include("inc/bottom.php"); ?>

Как делать в данном и конкретном случае решать Вам. Я же просто попытался направить тех, кто начинает писать на php, а может и тех, кто уже пишет, на определенный вариант или стиль программирования.

В поисках учебного материала по созданию php сайтов я нашла самое упрощенное раскрытие этой темы, что и представляю Вашему обозрению.

Хочу отметить, что современные cms работают на php и этот урок дает упрощенное понятие о принципах работы таких сайтов. Для того, чтобы создать полноценный интернет портал разумнее использовать уже известные движки. Особенно привлекателен Wordpress своей дружественной админкой и постоянной поддержкой сообщества разработчиков.

И узнать все подробности по условиям и ценам.

Для изучения php мне понравился этот пошаговый курс обучения php (к сожалению, автор переквалифицировался, но я предлагаю посмотреть другой урок. Это "]]> Современный PHP: работа с Вконтакте ]]> "), здесь Вы можете спросить о непонятном и получить развернутый ответ. Освоить этот язык программирования помогут о том, как сделать современный php веб-сайт, самоучители php - все для обязательного прочтения.

Перед тем, как рассмотрим создание сайта с помощью php, мы уже поняли, что PHP сам по себе сайтов не делает. И то, что мы видим на экране, изнури ничто иное, как самый обычный HTML, путь даже страница и имеет расширение PHP.

Поэтому, говоря «сделать сайт на PHP», мы подразумеваем, что все-таки сайт делается на HTML, а PHP используем как средство облегчить себе жизнь в дальнейшем при поддержке сайта.

Теоретическая часть в данный момент нам не нужна, да и переписывать теорию с многочисленных источников не буду вовсе. Эти страницы - всего лишь шпаргалки по созданию php сайта. Поэтому, приступим к практической части. На этой странице мы научимся делать шаблон php сайта и создавать на его основе много страниц на php.

Урок 1. Как создать сайт на php

Например, сделаем сайт, состоящий из 5 страниц.

Пусть структура будет такой:

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

Для начала создадим шаблон нашей страницы в HTML:

PHP TEST

Эта страница сделана при помощи PHP (Personal Home Page)

Раздел 1

Раздел 2

Раздел 3

Раздел 4

Раздел 5

Для того, чтобы поменять код сразу на пяти страницах, мы должны разложить этот код на части, то есть - на самостоятельные файлы. Разбиваем наш HTML-код на три части:

PHP TEST

Раздел 1

Раздел 2

Раздел 3

Раздел 4

Раздел 5

Раздел № …

Таким образом, мы увидели каким образом можно разобрать нашу страницу. Очень простой пример, наверное самый легко усваиваемый в сети, за что огромное спасибо автору! Усложнением каждый из нас будет заниматься самостоятельно.

Что ж делать теперь? А вот что.

Сохраняем наши части следующим образом

(обратите внимание на строку, объявляющую PHP код):

Файл - header.php

PHP TEST

Раздел 1

Раздел 2

Раздел 3

Раздел 4

Раздел 5

Файл - footer.php

Куда ж делся файл mainblock.php? Его и не выделяют в отдельный файл. С этим файлом в дальнейшем работает веб-мастер. В нем будет содержаться основной контент страницы. И править мы его будем «ручками», а то размечтались все на автомат поставить;).

Смотрим что получилось в итоге.

Два файла:

Первый файл отвечает у нас за "верхнюю часть" нашей странички, второй - за "нижнюю".

Мы подошли вплотную к созданию php шаблона сайта.

Что делаем теперь? А вот как. Создаем еще один файл. К примеру назовем его - test.php. Этот файл и будет нашим шаблоном. Рассмотрим, как же нам собрать нашу страничку.

Воспользуемся для этого функцией include(); Эта функция позволяет нам включить в наш код PHP, другой файл. Итак! Внимание! Таинство начинается.

Пишем следующее:

#все дальнейшее обрабатывается интерпретатором PHP ?>

#подключаем наш заголовок страницы

include("header.php");

#Подключаем наш подвал

include("footer.php");

Всё. Мы с вами создали на PHP шаблон страницы. Теперь, если мы загрузим этот файл через браузер (предварительно, разобравшись с работой денвера или же установив, отдельно связку Apache + PHP), то получим, при просмотре в "блокноте", следующий код:

PHP TEST

Раздел 1

Раздел 2

Раздел 3

Раздел 4

Раздел 5

Это шаблон нашего сайта. Тут у нас идет основная информация

Делаем много страниц нашему php сайту

Теперь мы можем переименовывать эту страницу хоть сотней различных имен (пользоваться сохранить как..., умеют уж все). Соответственно множим страницы с именами:

Изменяем информацию на этих страницах между

Это Раздел 1

Это Раздел 2

Это Раздел 5

Если Вы уже перечитали необходимую литературу по php , то без труда догадались, что все эти файлы должны быть сохранены в одной директории. Если Вы, к примеру, сохраняете шаблоны страниц в отдельной директории, то строчка включения файла в код будет выглядеть следующим образом: include("dir_name/header.php");. Где "dir_name" имя вашей директории.

Подведем итог.

Мы получили 5 файлов, которые выглядят одинаково. При этом, редактируя файлы header.php и footer.php имеем возможность изменить внешний вид всех 5 файлов. Попробуйте, покликайте по ссылкам. Смело изменяйте что-нибудь в файлах header.php или footer.php и посмотрите как эти изменения коснутся каждой страницы. Что и требовалось получить. Вот так вот несложно.

Приведенный пример прост и примитивен, что и нужно для первых шагов в изучении и создании сайта на языке php.

Все поставленные цели в начале этого урока выполнены:

Создали сайт на PHP

Облегчили себе всю дальнейшую жизнь, связанную с поддержкой сайта

Добились того, что страницы выдержаны в одном стиле

Этот урок был написан в 2003 году, с тех пор сам php совершенствовался не раз. Урок найден по ссылке как сделать сайт на php.

В следующем уроке мы разберемся, что можно сделать с ссылками с помощью могучего PHP. Чтобы быть в курсе обновления материала сайта, можете подписаться на RSS ленту.

Для более глубокого изучения темы, как создать сайт на php посмотрите практический урок и скачайте архив шаблона сайта.

Если же вы готовы к серьезному изучению php, то лучше видео курса от Попова найти сложно. У него огромный опыт и хороший слог.

Понравилась статья? Поделиться с друзьями: