Модульное строение страницы PHP


Оглавление (нажмите, чтобы открыть):

Модульная система сайта

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

Подскажите как правильнее делать сайт в котором собирается шаблон из компонентов
т.е. есть index.php в который подключается например page.php со стилем page.css
в page.php подключаются файлы header.php, content.php, footer.php у которых есть соответственно свои файлы стилей.
каким способом можно правильно объединить все стили?
какая структура должна быть сайта?
И как должно быть, ведь файл стилей указывается вначале. Но на этот момент работы скрипта еще не известно какие стили в итоге подключатся.
вижу такой вариант например. во время построения сайта генерировать ключ/наименование стиля, склеивать все файлы стилей в переменной и сохранять ее например в БД под сгенерированным ранее ключом. а файл стилей формировать из БД по ключу с последующим удалением из базы.
Как делать правильно?
Евгений++ на форуме Добавить отзыв для Евгений++ Пожаловаться на это сообщение

25.10.2020, 22:52

Модульная, плагинная система
Здравствуйте. Вопрос, долгое время существует моя CMS, но написана она просто с помощью include и.

Модульная архитектура приложения
Здравствуйте! Подскажите идею красивой архитектуры модульного приложения. Или какой нибудь.

Электронная система оплаты с сайта
Здравствуйте, Захотел удостовериться в системе оплаты с сайта. Есть какой то способ написать.

Скрипт (система) поиска для сайта
Подскажите ХОРОШИЙ скрипт поиска по сайту. Сайт написан на php. Все страницы на php. Не предлагайте.

Система тегов и меток для сайта
Доброго времени суток всем! У меня возникла такая необходимость создать «такую» вещь, например.

26.10.2020, 05:14 2

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

Хедер
тело
футер

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

26.10.2020, 11:33 3

Добавлено через 8 минут
Объединять все стили в один фай имеете ввиду?
Тогда набираете этот массив как в примере. В конце читаете время последней правки каждого, объединяете в один файл и подключаете уже только его.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Блочная верстка сайта

Раньше на просторах Интернета был широко распространён табличный тип вёрстки, которому посвящена отдельная статья. Однако со временем этот подход к созданию структуры сайта устарел, и на смену ему пришла блочная вёрстка.

Отличия блочной вёрстки от табличной

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

Блочная вёрстка лишена недостатков табличной — поисковыми системами она индексируется лучше, её код не такой развесистый, да и блоки

Единственный ощутимый минус блочной вёрстки — сделанные на ней сайты могут по-разному отображаться в обозревателях. Чтобы этого избежать, нужно делать вёрстку «кроссбраузерной», то есть одинаково отображаемой любым обозревателем.

Суть блочной вёрстки

В графическом редакторе создаётся макет сайта: размечается, где какая область страницы (шапка, низ, боковая панель, основной контент) будет находиться и сколько места занимать, готовятся картинки, фоны.

Каждая часть страницы помещается в свой блок

Конечный HTML-документ представляет собой набор блоков

Принципы блочной вёрстки

Первый — конечно же, повсеместное использование тега

Второе правило — принцип разделения кода, согласно которому содержимое от оформления нужно отделять. Говоря проще и ближе к нашему случаю: HTML — отдельно, CSS — отдельно (желательно в разные файлы). Такой подход делает структуру понятней. Программисту не нужно открывать CSS, дизайнеру — HTML. Все смотрят свой код и не мешают друг другу. Идеально.

Третий принцип — таблицы нужно использовать не везде, а по необходимости, при этом полностью отказываться от них так же странно, как и применять не к месту.

Пример блочной вёрстки

Но, сколько не теоретизируй, а понимать всё проще на примере.

Итак, у нас есть макет (рисунок ниже). Условный, конечно — просто разметка, ведь цель примера — как можно наглядней объяснить принцип создания блочной вёрстки. Зная базу, навести красоту и усложнить макет вы сможете и сами, а я лучше не буду перегружать пример.

Согласно макету, страница сайта будет содержать пять блоков: «шапку», навигационное меню, боковую панель, основной блок с контентом и «ноги».

Сначала создадим HTML-страницу: обозначим структуру, разметим её. HTML-код будет таким:

Разберём некоторые моменты.

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

Теперь добавим файл CSS, код которого приведён ниже.

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

#clear запрещает обтекание элемента слева и справа. Если убрать это правило, вёрстка «поедет» и низ сайта перестанет корректно отображаться.

CSS творит чудеса, и с ним наша HTML-страница примет уже совсем другой вид.

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

Полезные ссылки:

  • Основы HTML — бесплатный 2-х часовой видеокурс по основам HTML;
  • Бесплатный курс по верстке сайта — пример блочной вёрстки с чистого листа;
  • Вёрстка сайта с нуля 2.0 — полноценный платный курс.

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

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

Мастер Йода рекомендует:  Поисковая оптимизация. Что и к чему

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

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

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


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

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

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

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

Как делать в данном и конкретном случае решать Вам. Я же просто попытался направить тех, кто начинает писать на php, а может и тех, кто уже пишет, на определенный вариант или стиль программирования.
//www.x-bios.3dgames.ru — Сайт моего портала, но к сожалению он закрыт
//fallenangels.combats.ru — Сайт игрового клана, также полностью построен на модульной системе.

. _DM_ пишет 15.04.2003 @ 15:08

Ну и что тут нового? В верх страницы и в низ подключам файлы топ и боттом (типа скины), а в зависимости от переменной подключаем в серединку нужный файл..

Бесполезная статья ИМХО.

. Ray Adams пишет 15.04.2003 @ 16:39
. Const пишет 17.04.2003 @ 09:01

Нормальная статья. Чем проще. подробней и конкретней — тем ближе к жизни.
И не надо оправдываться.

А ИМХО_ну хочу анекдот расказать..

Генерал: » Товарищи академики! Если Вы такие умние. то чего строем не ходите!?»

. VoRoN пишет 20.04.2003 @ 02:26

Про пхпнюк полностью согласен нефига он не крутой и тем кто знает язык пхп не нужен вообще.

Но у меня движок все же круче всех!
Главная его фишка в том что, он не использует MySQL и сам сознает страничку с заголовками статей. Просто пихаешь в директорию текстовый файл и получашь новую публикацию со всеми вставками, даже матта тег вставляет :)))
Тока вот беда, надоело сайто строительство 😉
Кто хочет посмитреть прошу сюда mad.km.ru
Пример файла публикации:
https://mad.km.ru/doc/news/1
https://mad.km.ru/doc/news/2
https://mad.km.ru/doc/news/и т.д.

. Ray пишет 21.04.2003 @ 23:09
. Gex пишет 24.04.2003 @ 19:29

инфа для ньюбиесов конечно, но почитать стоит

. TIX пишет 25.04.2003 @ 13:54
. Zlomrak пишет 26.04.2003 @ 02:33
. Ober Gun пишет 28.04.2003 @ 11:12

Ошибочки есть, их не может не быть 😉

— В cтатье предлагается «/include/ — каталог вспомогательных файлов», а в коде для таких файлов исползуется каталог /inc/. Создавая папки и используя приводимый код, создавате inc, а не include!

— в коде index.php строка 10:
include(«inc/$mod.php»);
должна выглядеть так:
include(«mods/$mod.php»);

— в коде bottom.php, первая строка:

. Ray Adams пишет 01.07.2003 @ 12:34
. Вано пишет 25.08.2003 @ 03:27
. Airon пишет 28.10.2003 @ 18:41
. Ray Adams пишет 28.10.2003 @ 23:20
. Airon пишет 30.10.2003 @ 22:41

Вот кусок твоего кода(судя по всему он является куском индекса.пхп):

if (!isset($mod) || ($mod==»») || (!file_exists («mods/$mod.php»))) <
$mod=$sys_def_mod;
#Проверка на существование переменной $mod, и существования такого модуля
# если неверное условие то присваиваем ему значением модуля по умолчанию
>
$PAGE_TITLE=»Модуль $mod»;
include(«inc/top.php»);
include(«inc/$mod.php»);
include(«inc/bottom.php»);
____________________________________________________

если передать переменную mod так : mod=../index, то повесим скрипт, как этого избежать?


. Ray Adams пишет 31.10.2003 @ 00:37

А коменты мои труждно было прочесть.
———————————————————-
А что будет если вы попытаетесь вызвать «index.php?mod=../index» .
В том примере что я написал хорошего будет мало, на самом деле такие вещи делаются по немного по другому. К примеру в базе данных хранятся названия модулей и соответствующие им имена файлов. Тогда к примеру mod1.php может иметь имя module1 и вызываться как index.php?mod=module1. Далее через запрос к базе выбирается имя файла и он уже инклюдится.
Я же приводил пример наипростейшей системы с минимальной защитой.
—————-

. NataS пишет 16.11.2003 @ 01:45
. DreameR пишет 19.11.2003 @ 17:16

>>если передать переменную mod так : mod=../index, то повесим скрипт, как этого избежать?

. OSCAR пишет 21.11.2003 @ 14:16
. sem пишет 16.01.2004 @ 00:42

esli smotretj na statju obsheobrazovateljnogo xaraktera..togda klassnaja statja.
no mne interestno, skoljko pojavilosj portalov, osnovanix na dannom skripte. navernjaka kto-to prodvigaet ego kak ochenj klasnuu i mudruu CMS 🙂
——————————————————————————
vopros nuka, chto tolku oblivatj grjazju. kto s nim plotno razbiralsja? da edinizi. vse privikli k bludechku s goluboj koemochkoj. a vi ne za bili chto eto OpenSource so vsemi vitikaushimi posledstvijami.

no dage pri vsem tom, tot ge postnuke imeet odno iz samix stabiljc jader. v kotorom realizovano vse samoe neobxodimoe dlja raboti CMS.
Mne vot interestno, mnogo li ludej delali svou OS. na kot oni sejchas rabotaut 🙂 i samoe glavnoe smisl etogo? A skoljko pisalo , dage melkie programi dlja pod vindu ili lunux.

tem bolee chto postnuke snostno dokumentirovan, imeet svoj API nu i tak dalee. a samoe glavnoe imeet postojannoe razvitie i postojannij kolektiv programmerov, kotorie pravjat dovoljno bistro bugi. Tem bolee bugi vedj pojavljautsja v osnovnom v moduljax. a kogda poslednij serjeznij bug bil najden v jadre.

Kasateljno proizvoditeljnosti. xe chto skazatj, snachala opredelitesj, chego vam nugno,a potom pretenzii k nuku. «chto bi podmesti pol, ne objazateljno bratj metlu s turboreaktivnim dvigatelem i jadernim reaktorom. dostatochno obichnogo venika. nu a dlja bolee prodvinutix-pilesosa» Tak i tut. dlja togo chto bi vistavitj svou biografiu i 10 kartinok druzej, ne objazateljno bratj cms vioobshe, esli van ne xochetsja morochatsja s kagdim filom vozmite simpleCMS. esli novosti kagdij denj. najdite legenkuu blog systemu. nu a kolj ug u vas sajt s 10.000 reginix polzovatelej i kot ne prinost dostatochno deneg dlja komercheskogo produkta.
vozmite tot ge PostNuke ili ezPublish, toljko viberite normaljnogo provajdera. postavte svoj servak ili dedicating i gonjate. a tak chto bi vi tut osobo ne krichali o zenax.
dedik Celeron 1700, 512 ram, 40 gb vint i 100Gb trafika obojdetsja vam nu v 40 eur/mesjaz. A esli vash site ne prinosit 50$ v mesjaz, ne trogajte nuku prosto 🙂

. Ray Adams пишет 16.01.2004 @ 01:03
. Антон пишет 04.02.2004 @ 08:30
. djmel пишет 16.02.2004 @ 04:44

Спасибо за наставление на правильный путь — эта статья мне очень помогла понять что есть PHP.
Но у меня не все работает поэтому прошу помощи — стартовая страница скриптом собирается и выводиться правда браузер никак не хочет автоматом определить кодировку, а вот дальше совсем не работает кликаю по ссылкам — и ничего не происходит. как я понял скрипту не передается значение переменной $mod . Пожалуйста подскажите по какой причине сие происходит?

. Ray Adams пишет 16.02.2004 @ 08:36

1. Ты скорее всего не правильно строимш header файла вот потому эксплорер и не определяет кодировку.

‘.$PAGE_TITLE.’ ‘;
?>
вот примерный header для страницы.

2. Если переменные не видны, то значить у тебя register_globals = off, а это значить что, PHP автоматически твои переменные не будет создавать, и их тебе надо вытаскивать самому. Советую почитать про настройку PHP/
; You should do your best to write your scripts so that they do not require
; register_globals to be on; Using form variables as globals can easily lead
; to possible security problems, if the code is not very well thought of.
Тебе надо в начале скрипты инициализировать нуждные тебе переменные.
Вытапскивая их их этих массивов
$_ENV, $_GET, $_POST, $_COOKIE, $_SERVER.
Соответственно , если ты передает как index.php?mod=news&show > $mod=$_GET[‘mod’];
$show ];

. Byrbon пишет 21.03.2004 @ 11:18
. Terrible Brooder пишет 24.04.2004 @ 01:09

Мне кажется, что сама система использования МОДОВ таким образом ни к чему хорошему не приведет.
Попробую объяснить всоё мнение:
1) Неудобоваримость кодов как таковых — нельзя посмотреть весь дизайн сайта целиком(без РНР)
2) Постоянные включения и выключения РНР кодов сильно сказываются на производительности. Я имею в виду строки типа:
.
?> какой-то текста
какой-то текста

…начало файла …

… конец файла …

Почему этот скрипт не работает может тут есть ошибка?
Почему Тут файлы с расширением *. Phtml ? — что это такое.
Объясни все поподробней. Может тут не все показано? Или что-то надо еще заносить в эти файлы?
Ответы шлите на мыло Basile666@inbox.ru пожалуйста!! или здесь пишите, но лучше здесь и на мыло

. Basile пишет 21.06.2004 @ 09:12

я начинающий сайто-писатель и у меня такой вопрос

…начало файла …

… конец файла …

Почему этот скрипт не работает может тут есть ошибка?
Почему Тут файлы с расширением *. Phtml ? — что это такое.
Объясни все поподробней. Может тут не все показано? Или что-то надо еще заносить в эти файлы?
Ответы шлите на мыло Basile666@inbox.ru пожалуйста!! или здесь пишите, но лучше здесь и на мыло

. Teddy_B. пишет 03.07.2004 @ 03:18
. Teddy_B. пишет 07.07.2004 @ 02:53
. пишет 04.08.2004 @ 15:21
. Aleks_Drims пишет 03.10.2004 @ 18:05
. AlexanderCam пишет 15.10.2004 @ 18:31

А вот у меня как отличившегося не заработало 🙁
У меня и в линухе и в виндах получается одно и тоже [ https://www.myjunk.nm.ru/portal.gif ] вызывается функция die. А если это условие
( if (!eregi(«index.php», $PHP_SELF)) < die ("Access denied"); >)
закоментировать, то этого естественно не будет, но и по модулям перемещаться я тоже немогу. пробовал так $mod=$_GET[«mod»] и всеравно не работает и вообще каким это образом скрипт index.php узнаёт значение переменной $mod? 🙁
Вот то, что я понаписал, но фактически всё из этой статьи [ https://www.myjunk.nm.ru/www.zip ]

P.S. если есть у кого 100% работающий вариант примера этой статьи, то пришлите мне на мыло если не затруднит.

. Tiger пишет 28.12.2004 @ 02:38
. Олег пишет 24.01.2005 @ 23:38
. Greg пишет 17.05.2006 @ 13:18
. Роман пишет 13.12.2006 @ 14:56

. BirDene пишет 23.09.2007 @ 08:11
. Dr@gomir пишет 23.01.2008 @ 00:03
. Владимир пишет 14.01.2009 @ 22:16
. d-Const пишет 17.01.2009 @ 21:25
. d-Const пишет 17.01.2009 @ 21:39

Обнаружил свою проблему.
В начале скрипта нужно добавить строку
$mod=$_REQUEST[‘mod’];
тогда все работает 🙂
вот весь код
_______________________________________________________________________

_______________________________________________________________________

Как реализовать модульный движок на php?

Павел Кузьмин: Если смотреть в общем, все вреймворки одинаковы. Они дают кеш, orm, роутинг, mvc, хелперы разныеб IoC и т.п. Как раз каркас общей логики работы приложения. Так же все они дают возможность делить код на изолированные части (модули, бандлы и т.д.) и реюзать их в смоих приложениях. Я писал и на yii (и первый и второй) и на симфонии 2.6. Так же поковырял ларавел 5.

Ларавел вызвал отвращение, а вот Симфония мне понравилась. Там действительно все правильно и четко сделано. Особенно мне понравились анотации, которым там отдается предпочтение.

Но yii проще. И порог вхождения ниже и меньше ограничений накладывает. Я, конечно, люблю правильную и красивую архитектуру, чтобы кругом абстракции. Но это мешает работе. Слишком много внимания требует.

Есть распространенное мнение, что симфония подходит для больших и долгоиграющих проектов, а yii для небольших. Так вот все это глупости. Я лично участвовал в нескольких проектах на yii, которые живут уже больше 4 лет. Если сделать общение между модулями через события, то все замечательно работает и сопровождается.

Так же часто можно услышать довод, что в yii есть божетсвенный объект \Yii::$app, который связывает все приложение. Но это просто точка доступа к фабрикам. По сути \Yii::$app->getCache(), getDb() и т.п. это все IoC контейнеры. Просто в отличае от симфонии к ним можно обратиться через единую точку доступа, а не создавать экземпляры.

Я на yii пишу с самой беты первой версии и мне очень нравится этот фреймворк. Не без косяков конечно, особенно в первой версии были, но где их нет? Зато мне фреймворк помогает, и мне всего один раз пришлось с ним бороться.

Павел Кузьмин: Ну, я с ним ознакомился довольно поверхностно. Но сразу резануло глаза отсутствие нормлаьного автодополнения в IDE. Нашел в интернете специальный файл, который давал ide нужные данные и автокомплит в общем то работал. Но я считаю, что это не нормально.

И на сколько я помню фасады у них в глобальной области видимости лежат.

Добавление раздела структуры

В левом меню выберите раздел Структура сайтаСтруктура сайта. После перехода в список узлов структуры сайта в меню Раздел выбираете пункт Добавить.

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

Типы разделов

Тип раздела структуры может быть 4 видов

Статичная страница

Используется для публикации статичной страницы, редактируется через визуальный редактор. Создать страницу вы можете прямо в структуре сайта, для этого просто вносите текст в содержимое страницы.

Чтобы связать ранее созданную страницу из раздела «Страницы и документы» выберите соответствующую страницу в Раздел документов и Название документов, текст страницы можете редактировать здесь же.

Типовая динамическая страница

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

Динамическая страница

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

Ссылка

Ссылка на другой раздел сайта или внешняя ссылка на страницу другого сайта. Адрес внешней ссылки необходимо указывать вместе с протоколом, например, https://www.hostcms.ru/shop/ , внутренняя ссылка может быть просто указана как /shop/ .

Форма добавление и редактирования раздела структуры

Закладка «Основные»

Элемент пути к данной странице от родительского раздела. Например, «about-company».
Для главной страницы укажите «/».

Поле Описание
Название раздела в меню Наименование раздела в меню сайта.
Родительский раздел Раздел, в который помещается данная страница.
Меню Меню, в котором будет отображаться ссылка на данный раздел.
Отображать в меню сайта Управляет видимостью данного раздела в меню.
Путь
Сортировка для текущего уровня Порядок сортировки текущей страницы в подразделе.
Группа доступа Группа пользователей сайта, имеющая право доступа к данному разделу. Вы можете запрещать доступ к страницам сайта пользователям, не входящих в выбранную группу. Если указано «Как у родителя», права доступа берутся так же, как у вышерасположенного узла.
Активность страницы Неактивные страницы не отображаются пользователю и не выводятся в меню.
Индексировать Управляет индексированием страницы встроенной системой поиска. Страницы со снятым флажком «Индексировать» не индексируются модулем «Поиск по сайту».
Доступ через HTTPS Использовать только HTTPS для доступа к узлу структуры.
Тип раздела Выберите тип раздела (статичная, динамическая страница, типовая динамическая страница или ссылка).


Закладка «SEO»

Поле Описание
Заголовок страницы [Title] Значение мета-тега для страницы.
Описание страницы [Description] Значение мета-тега для страницы.
Ключевые слова [Keywords] Значение мета-тега для страницы.

Закладка «Google Sitemap»

Поле Описание
Частота обновления Частота обновления страницы.
Приоритет Приоритет данной страницы относительно остальных страниц.

Закладка «Дополнительные свойства»

Закладка предназначена для добавления значений дополнительных свойств раздела сайта. Некоторые виды дополнительных свойств могут иметь несколько значений, для добавления нового значения свойства нажмите» +» справа от значения, для удаления значения свойства нажмите» –».

Модульные здания из блок-контейнеров

Мы осуществляем проектирование, изготовление и монтаж модульных зданий «под ключ», с подключением к электросетям, водоснабжению и канализации, либо, при отсутствии сетей, с использованием автономных источников питания, канализационных установок и насосных станций.

Готовы к производству зданий любого масштаба имеем опыт создания временной инфраструктуры на крупнейших спортивных мероприятиях, объектах промышленности и энергетики.

Индивидуальный проект под ваши задачи

Применение модульных зданий

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

Мобильный офис продаж, выставочный павильон

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

Модули могут быть оснащены мебелью и любым дополнительным оборудованием по желанию заказчика.

Временные строения для крупных мероприятий

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

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

Камеры хранения, временные строения для крупных мероприятий

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

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

Штабы строительства, административные здания

Мобильность и унифицированность контейнерных модулей даёт возможность оперативно развернуть на неподготовленной площадке комплекс административных зданий и вспомогательных помещений.

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

Внутренние комплексы для каркасно-тентовых конструкций

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

Подобное решение даёт возможность создавать произвольные планировки для внутренних помещений, без необходимости усложнения внешней конструкции, а также, разделять зоны с разным климатом, освещением и т.п.

Внутренние комплексы для каркасно-тентовых конструкций

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

Подобное решение даёт возможность создавать произвольные планировки для внутренних помещений, без необходимости усложнения внешней конструкции, а также, разделять зоны с разным климатом, освещением и т.п.

МОДУЛЬНОЕ СТРОЕНИЕ СИСТЕМЫ

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

Следующий шаг в исследовании связей в системе состоит в выделении:

· всех тех воздействий, которые данный элемент испытывает со стороны других элементов и со стороны внешней среды;


· воздействий, которые он оказывает на другие элементы и на внешнюю среду.

Первую группу воздействий принято называть входами (воздействия на элемент), а вторую – выходами (воздействия от элемента).

Выходы элемента определяются входами и его внутренним строением. Говорят, что выход есть функция от входа и самого элемента.

Язык входов и выходов переносится на произвольную совокупность элементов, включая и всю систему целиком. И здесь можно говорить обо всех входящих и выходящих воздействиях. Это не просто удобный, но весьма плодотворный подход к рассмотрению системы, поскольку, характеризуя группу элементов только входами и выходами, можно получить возможность оперировать этой частью системы, не вникая, как связаны и взаимодействуют между собой ее элементы, то есть уйти от детализации в описании при сохранении основных особенностей системы.

Модулем называется сама система, группа элементов системы или отдельный элемент системы, описываемые только своими входами и выходами и обладающие определенной цельностью.

Система может представляться набором модулей и сама рассматриваться как модуль. Модульное построение системы, как правило, определяет ее декомпозицию. Нередко оно определяет и структуру. Однако значение понятия модуля в системном анализе и смежных с ним дисциплинах еще шире. Деление системы на модули – это удобный и наиболее распространенный прием работы с искусственными системами, включая их создание (проектирование), проверку, настройку, усовершенствование.

Именно модульное строение системы в сочетании с принципом введения все более крупных модулей при сохранении обозримого объема входов и выходов позволяет рассматривать сколь угодно сложные системы. Примерами реализации этого положения на практике являются создание из сотен тысяч элементов (материальных, информационных, энергетических) вычислительных машин четвертого поколения, а также создание информационных систем и вычислительных сетей, охватывающих целый ряд стран, включая их многоуровневое программное обеспечение. Разработка таких систем обычно идет «сверху», с продумыванием назначения, входов и выходов модулей верхнего уровня, и далее спускается вниз, все больше детализируя систему.

Заметим также, что понятие модуля близко к концепции «черного ящика» в кибернетике – так называют объект, в котором известна только зависимость выходов от входов. Однако в отличие от такой крайней ситуации здесь, при исследовании сложных систем, обычно можно проанализировать, что же происходит внутри модуля, но удобно не делать этого на определенной стадии рассмотрения.

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Как то на паре, один преподаватель сказал, когда лекция заканчивалась — это был конец пары: «Что-то тут концом пахнет». 8368 — | 7999 — или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

Модульное программирование на php

по концепции модульного программирования мне нужно разбить по 3-м отдельным файлам(модулям) эти методы

каким образом оптимально связать MVC и модульное программирование

По поводу пункта 4: а если задача состоит в возвращении структуры, к примеру? Или вы геттеры используете здесь?

оО это же просто пакетный менеджер.

2) каждый модуль эта папка с нужными классами.

А как реализуете зависимости между классами?

когда можно родственные операции объединить в один класс, например, вычисление интегралов методом Симпсона, трапеций и парабол я могу занести в один класс, описав данные методы, но по концепции модульного программирования мне нужно разбить по 3-м отдельным файлам(модулям) эти методы

Языки сценариев для веб-программирования
Мини-учебник по PHP

Дайте мне хороший сценарий, и я сверну горы.

Зачем создателю сайта нужны языки серверных сценариев?

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

  • во-первых, содержимое его страниц формируется «на лету», на основе данных, хранящихся в базе данных, а не заготовлено заранее (пример — лента новостей);
  • во-вторых, есть обратная связь с посетителями – сайт активно взаимодействует с ними через формы, содержащие поля для ввода данных (пример — гостевая книга, или возможность комментировать материалы и читать эти комментарии);
  • и в-третьих, у него, как правило, разделены фронтальная часть (для взаимодействия с пользователями) и служебная (для взаимодействия с администраторами сайта, наполняющими его содержимым).

Добавление страницы в статический сайт – работа достаточно нудная: надо загрузить на сервер новый материал (как правило, по протоколу FTP) и прописать на него ссылки из нескольких мест – иначе про новую статью никто никогда не узнает. Служебная часть сильно облегчает эту задачу: ссылки будут сформированы автоматически.

Обычно люди приходят к необходимости создания динамических сайтов, когда разросшийся объем хранящейся информации или желание часто ее обновлять требуют использования того, что на программистском жаргоне называют «движком» сайта, а официально — CMS (content management system), то есть системой управления содержимым. Создание такого движка невозможно без привлечения сценариев, выполняемых на стороне веб-сервера. Именно эти сценарии как помещают содержимое на сайт, так и формируют внешний вид страниц «на лету».

Как работают сценарии? Языки сценариев

Что происходит, когда вы открываете в браузере (Internet Explorer, Opera, FireFox или любой другой) страницу какого-нибудь сайта?

  • браузер, он же веб-клиент, запрашивает страницу, обращаясь к веб-серверу (чаще всего это Apache, реже — IIS).
  • если веб-сервер обнаруживает на запрошенной странице обращения к сценариям, то обращается к их интерпретаторам, которые выполняют сценарии и формируют на их основе или всю страницу, или отдельные ее фрагменты.
  • И, наконец, веб-сервер отсылает сформированную страницу на клиентскую сторону, то есть в окно браузера посетителя сайта.


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

Наиболее распространенные языки сценариев со свободно распространяемыми кодами для веб-сервера Apache — PHP, Perl и Python. Все они достаточно гибкие и допускают подключение новых модулей, библиотек и т. п. Все они выполняются на стороне сервера. Это и обеспечивает быстродействие (из-за возможности использовать ресурсы мощных серверов), и гарантирует исполнение (пользователь не может отключить выполнение программы), и не позволяет посетителям сайта видеть исходные коды сценариев.

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

История создания PHP
Самая лучшая книга по PHP на русском языке.

В 1994 году датский программист (ныне живущий в Канаде) Расмус Лердорф (Rasmus Lerdorf) написал набор скриптов для обработки шаблонов HTML-документов. Вначале этот инструментарий был написан им на Perl, но когда возможностей этого языка по функциональности и быстроте перестало хватать, Лердорф создал на языке C собственный интерпретатор шаблонов и назвал его PHP/FI (Personal Home Page / Forms Interpreter — «Личная домашняя страница / Интерпретатор форм»). Поскольку коды нового инструмента были открыты и свободно распространяемы, это привело к их быстрому расширению и продвижению силами энтузиастов из различных стран. В 1997 году вторую версию интерпретатора PHP/FI 2 использовали около 50 тысяч (около 1% на тот момент) интернет-сайтов мира.

Настоящая же революция в PHP произошла в 1998 году, когда два израильских программиста Энди Гутманс (Andi Gutmans) и Зив Сураски (Zeev Suraski) из израильского института Технион переписали код с нуля, посчитав существовавшую на то время версию не пригодной для разработки приложений электронной коммерции, над которыми они тогда работали. Так появился PHP 3 — почти тот PHP, который мы знаем сегодня: язык с модульной структурой, позволяющей расширять возможности ядра независимо работающими программистами со всего света. В третьей версии появилась поддержка огромного множества платформ, веб-серверов, интернет-протоколов и т.п. Кроме того, в языке сильно изменился синтаксис. Он стал более удобным, более мощным и, что особенно важно, объектно-ориентированным.

Это интересно: появление настолько переработанной версии привело к новой расшифровке аббревиатуры языка. Новая, ставшая теперь уже официальной расшифровка — «PHP: Hypertext Preprocessor» — является рекурсивной, то есть ссылающейся на саму себя. Есть, впрочем, и ряд неофициальных расшифровок. Так, из-за легкости изучения и не всегда высокой квалификации разработчиков аббревиатуру иногда расшифровывают иногда как «People Have Problems».

Победное шествие PHP 3 по всемирной паутине было впечатляющим: уже к концу 1998 года он использовался в 10% веб-сайтов интернета. С тех пор возможности PHP и его распространенность выросли многократно. На веб-серверах сегодня иcпользуются в основном PHP 4 (его поддержка прекращена совсем недавно) и PHP 5, а на стадии тестирования находится PHP 6.

Немного практики

Как PHP-сценарии встраиваются в HTML-страницу?

Существует несколько синтаксически различных конструкций для внедрения PHP-кода в HTML-текст страницы. Самый ходовой из них:

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

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

Журнал « Лучшие компьютерные игры »

вместо блока PHP-сценария в ходе серверной обработки возникнет HTML-строка.

На страницу эту строку выведет встроенная функция echo, синтаксис которой достаточно понятен. Именно с такой строкой страница вернется в браузер к читателю сайта. Увидит же он ее в виде отдельного абзаца с выделенным жирным стилем названием журнала (сработают вставленные в строку HTML-теги и кавычки-ёлочки):

Журнал «Лучшие компьютерные игры»

Хотя PHP-сценарии и можно встраивать в HTML-страницы, они могут существовать и автономно, в отдельных файлах. Это очень удобно для создания больших сайтов – общий код хранится в одном экземпляре. Что самое важное – при этом и ошибки исправлять приходится только в одном месте.

Комментарии

Проще всего показать, как используются комментарии, нарастив ими предыдущий пример.

Журнал « Лучшие компьютерные игры »

» ); // комментарий до конца строки (стиль С)

Многострочный комментарий в стиле С.

В нем можно поместить не ограниченный по размеру текст

Эти комментарии будут игнорироваться при синтаксическом анализе PHP-кода и, в отличие от HTML-комментариев, не покажутся конечным пользователям при просмотре исходного текста страницы. Они нужны только разработчикам, чтобы документировать собственные действия.

Переменные и константы

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

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

Скалярные переменные

Основные типы скалярных переменных в PHP — это логические величины (принимающие значения «истина» или «ложь»), целые и вещественные числа, а также строки. Явно указывать, что же именно хранится в переменной, не обязательно, хотя и можно. Тип устанавливается во время присваивания переменной первого значения, но в ходе выполнения программы может много раз измениться. Вот так можно объявить переменные и присвоить им начальные значения:

$sql = «SELECT * FROM goods» ;

Массивы

Массив — это набор нумерованных значений. Нумерация всегда начинается с нуля. Существуют различные способы инициализации массивов. Вот один из них:


$languages = array ( «PHP» , «Perl» , «Python» );

Здесь создан массив из трех строковых элементов. Если мы выполним команду echo($languages[2]), то в браузер будет выведен элемент «Python» (нумерация ведь начинается с 0!).

Этот же массив можно было создать и иначе:

Нумерация при этом будет произведена автоматически, но строго последовательно.

Константы

Константы используются для задания постоянных величин. Они объявляются в РНР при помощи функции define():

Здесь объявлены две целочисленные константы: MIN_NUM и MAX_NUM. Основное отличие их от переменных в том, что значения им не присваиваются в ходе выполнения программы, а подменяют их символические обозначения еще до начала ее выполнения.

Простые операторы

Константы и переменные — это лишь данные, которые сами по себе не представляли бы интерес, если бы не существовало способов ими манипулировать. Для совершения действий и служат операторы. Существуют различные типы операторов: присваивания, арифметические, логические, условные и т.д. С оператором присваивания мы уже сталкивались, когда рассматривали инициализацию переменных. Арифметические операторы мало чем отличаются от того, что есть в других языках:

При работе со строками важную роль играет оператор конкатенации, сшивающий несколько строк в одну. Роль плюса в арифметических операторах здесь играет точка «.». Так, в следующем примере три слова, хранящиеся в переменных $s1, $s2, $s3, будут сшиты в одну фразу, а между ними будут вставлены пробелы.

echo ($s1 . » » . $s2 . » » . $s3);

// в браузере появится строка «Лучшие компьютерные игры»

Управляющие операторы

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

Условный оператор if. elseif. else

Рассмотрим условный оператор на примере, проверяющем (если уж база посвящена товарам) цену, которая для них указана.

if ($price «Очень дешевый товар» );

> elseif ($price > 100) <

echo ( «Дорогой товар» );

echo ( «Товар по разумной цене» );

Разумеется, условий elseif мы можем написать сколько угодно.

Операторы цикла while и for

В отличие от условного оператора if, который проверяет каждое условие один раз и действует в зависимости от истинности или ложности результата, оператор while продолжает выполняться, пока его условие остается истинным. Итак, в приведенном ниже примере переменная $s накапливает в себе сумму всех натуральных чисел от 1 до 100:

while ($i style=»color:#990000″> «Сумма = $s» );

Начальное значение суммы $s устанавливается в 0, а натуральное число $i принимается за 1. В ходе циклического выполнения сумма увеличивается на текущее натуральное число, после чего само это число увеличивается на 1 (оператор: $i++). Так продолжается до тех пор, пока $i не превысит 100 и, как следствие, оператор цикла не прекратит выполнение заложенных в него действий из-за нарушения своего условия.

Для выполнения той же самой задачи можно было использовать и цикл for. Запись оператора выглядит при этом проще:

for ($i=1; $i «Сумма = $s» );

Три выражения в цикле for, разделенные точкой с запятой, несут следующую смысловую нагрузку. Первое из них — инициализирующее. Второе определяет условие выхода из цикла (аналогично тому, как это делается в while). Третье условие определяет способ наращивания переменной цикла $i (в конце каждого набора действий она увеличивается на 1).

Функции

Функция — это законченный, самодостаточный и именованный участок кода, предназначенный к вызову из сценария или других функций. Если переменные — это кирпичики кода, операторы — небольшие его блоки, то процедуры — это уже оформленные строительные конструкции. На вход функции можно, но не обязательно, подать входные параметры, на выходе получается некий результат. Если сравнивать язык программирования с русским языком, то переменные, константы и ключевые слова играют в нем роль слов, операторы — знаков препинания, а функции — роль готовых текстов.

Строится простая собственная функция с двумя входными параметрами примерно так:

function some_func($argument1, $argument2) <

// тут расположен собственно текст функции

Программист может как писать собственные функции, так и использовать любую из готовых функций языка. Одну из них (echo) мы уже не один раз использовали в этой статье. Приведу еще несколько примеров часто используемых функций:

  • date() — возвращает текущие дату и время сервера;
  • substr(строка, стартовая_позиция, [длина]) — возвращает часть строки с указанной начальной позиции и (не обязательно) указанной длины;
  • strlen(строка) — возвращает количество символов в строке;
  • die(сообщение) — выводит сообщение, после чего прерывает выполнение сценария;
  • header() — выводит HEADER (заголовок) HTML-страницы;
  • mail(«адрес»,»тема»,»сообщение»,»от кого») — отправляет письмо с сервера (если на сервере все настроено);
  • include(имя_файла) — вставляет в текст одного сценария фрагмент текста, хранящийся в отдельном файле.

Как осуществляется обратная связь с сайтом через формы?

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

Добавить комментарий