Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PHP для продвинутых.docx
Скачиваний:
16
Добавлен:
01.07.2025
Размер:
12.54 Mб
Скачать

I. Инструментарий

IDE NetBeans – Интегрированная среда разработки.

Nodepad++ - Блакнот.

OpenServer – Локальный сервер (Содержит встроенные технологии:PHP, Apache, MySQL и системы управления MySQL).

Git – система контроля версий

Composer – локальный менеджер зависимостей.

Firefox – Браузер.

Firebug – Отладчик кода на стороне клиента

FireFTP – FTP.

II. Шаблоны проектирования

1. Простой

Деление базового шаблона на top.php, bottom.php и центральную часть (по-умолчанию index.php). Top.php и bottom.php подключаются на всех страницах.

Плюсы:

• простота

Минусы:

• разрезан на 2 части

• видимость переменных

• сложно сделать вложенную структуру

Пример использования

Простой шаблон в действии. Листинг 1.1

<?php

// Установка переменных шаблона.

$title = 'Добро пожаловать на сайт';

// Header.

include 'v_header.php';

// Содержание.

echo “Привет мир!”;

// Footer.

include 'v_footer.php';

Пример использования с GET-параметрами и SQL-запросами

Простой шаблон с GET-параметрами и SQL-запросами. Листинг 1.2

<?php

require_once ("templates/top.php");

if (!$_GET['url'])

{

$file = $_GET['url'];

}else

{

$file = "index";

}

$query = "SELECT * FROM $tbl_news WHERE url = '".$file."' AND hide='show'";

$adr = mysql_query($query);

if (!$adr) exit($query);

$tbl_users = mysql_fetch_array($adr);

echo "<h1>".$tbl_users['name']."</h1>";

echo $tbl_users['body'];

require_once ("templates/bottom.php");

В файле top.php будет подключение файла config.php, в котором прописано подключение к базе данных. В файлах templates/top.php и templates/bottom.php находятся верхнии и нижнии части шаблона.

2. Шаблонная функция

Определение в вызываемом php-файле (например, index.php) специальной функции вывода содержимого, которую вызывает базовый шаблон.

Пример использования:

Файл index.php. Листинг 2.1

<?php function content() { <a href="index.php">На главную</a>

<hr />

<div><?=$text?></div>

} // Установка переменных основного шаблона.

$title = 'Главная'; // Генерация HTML всей страницы.

include 'v_main.php';

Файл шаблона v_main.php

Файл v_main.php. Листинг 2.2

<html>

<head>

<title><?=$title?></title>

</head>

<body>

<h1><?=$title?></h1>

<? content(); ?>

<p><small>Все права защищены. Адрес. Телефон.<small></p>

</body>

</html>

Плюсы:

• целостность

• ограничение видимости переменных

Минусы:

• сложно сделать вложенную структуру

• представление вызывает функцию контроллера

3. Метод буферизации

Занесение шаблона в буфер.

Плюсы:

• вложенность шаблонов

• независимость представления от контроллера

• целостность шаблона

• возможность кэширования

Минусы:

• видимость переменных

• громоздкость кода

Весь код, который находится между функциями ob_start() и ob_get_clean(), на экран не выводится, а заносится в переменную.

Пример использования:

Файл index.php. Листинг 3.1

// Генерация HTML по внутреннему шаблону в $content.

ob_start();

<a href="index.php">На главную</a>

<hr />

<div><?=$text?></div>

$content = ob_get_clean(); // Установка переменных основного шаблона.

$title = 'Главная'; // Генерация HTML всей страницы.

include 'v_main.php';

Файл шаблона v_main.php

Файл v_main.php. Листинг 3.2

<html>

<head>

<title><?=$title?></title> </head>

<body>

<h1><?=$title?></h1> <?=$content?>

<div>Все права защищены. Адрес. Телефон.</div>

</body>

</html>

4. MVC и HMVC

Плюсы:

• вложенность шаблонов

• независимость представления от контроллера

• целостность шаблона

• возможность кэширования

• видимость переменных

• лаконичность кода

Фреймворки в ПХП зачастую используют для больших проектов. Основное преимущество - это, конечно же, предоставление возможности строить проект при помощи паттерна MVC (Model-View-Controller)

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

View - представления. Это шаблонизатор, например SMARTY, либо собственный. Представления - это вид, в котором отображаются данные. Controller – основной вызываемый класс, содержащий базовую логику приложения.

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

На сегодняшний день лучшими считаются два фрэймворка: YII и Kohana. У каждого из них есть свои преимущества и свои недостатки. Рассмотрим оба фрэймворка, чтобы впоследствии нам проще было выбрать фрэймворк для создания собственных проектов.

HMVC

Рассмотрим изображение, состоящее из двух частей: в левой части представлена концепция MVC, в правой – HMVC.

По концепции MVC, когда мы делаем запрос, мы сперва попадаем в контроллер (Controller). Затем в конроллере может происходить вызов модели (Model) (т.е. получение данных из модели) и затем передача этих данных в шаблон представления (View). Все очень просто, но это не всегда бывает удобно, хотя бы потому, что часто приходится вносить изменения в контроллеры либо дублировать контроллеры из-за того, что в них вносятся незначительные изменения.

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

В kohana концепцию HMVC помогают понять следующие технологии:

  • Наследование классов,

  • Использование переменных-шаблонов.

  • Request::factory(‘catalog’)->execute(),

  • Request::factory(‘catalog’)->redirect(),

  • Другие методы класса request, вызываемые в экшн, либо перенаправляют запрос в другой контроллер, либо подключают другой контроллер к текущему. Такие неявно вызываемые контроллеры принято называть виджетами.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]