Страница 7 из 9 16. Клиентская часть программы не отделяется от серверной части Многие программисты рекомендуют объединять код HTML (интерпретируемый на стороне клиента) и код PHP (выполняемый сервером) в один большой файл. Для маленьких сайтов это, возможно, неплохо. Но, когда ваш сайт начнет расти, вы можете столкнуться с проблемами при необходимости добавить какие-либо новые функции. Такой стиль программирования приводит к очень "непослушному" и громоздкому коду. API функции Если вы собрались отделить код PHP от HTML кода, у вас есть два варианта. Один способ - - создать функции динамического формирования вывода и поместить их в нужное место на веб-странице. Например, так: index.php - код страницы
<?php include_once ("site.lib"); ?> <html> <head> <title><?php print_header (); ?></title> </head> <body> <h1><?php print_header (); ?></h1> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td width="25%"> <?php print_links (); ?> </td> <td> <?php print_body (); ?> </td> </tr> </table> </body> </html>
site.lib - Сам код программы
<?php
$dbh = mysql_connect ("localhost", "sh", "pass") or die (sprintf ("Не могу открыть соединение с MySQL [%s]: %s", mysql_errno (), mysql_error ()));
@mysql_select_db ("MainSite") or die (sprintf ("Не могу выбрать базу данных [%s]: %s", mysql_errno (), mysql_error ()));
$sth = @mysql_query ("SELECT * FROM site", $dbh) or die (sprintf ("Не могу выполнить запрос [%s]: %s", mysql_errno (), mysql_error ()));
$site_info = mysql_fetch_object ($sth);
function print_header () { global $site_info; print $site_info->header; }
function print_body () { global $site_info; print nl2br ($site_info->body); }
function print_links () { global $site_info;
$links = explode ("\n", $site_info->links); $names = explode ("\n", $site_info->link_names);
for ($i = 0; $i < count ($links); $i++) { print "\t\t\t <a href=\"$links[$i]\">$names[$i]</a> \n<br>\n"; } } ?>Очевидно, такой код лучше читаем. Еще одно преимущество использования этой концепции - возможность изменения дизайна без модификации самого кода программы. Плюсы использования API функций - Относительно чистый, ясный код
- Быстрый код
Минусы использования API функций - Не настолько наглядно как система шаблонов
- Все-таки для модификации дизайна требуется некоторое знание PHP
Система шаблонов Второй способ, используемый для разделения PHP и HTML кода, - использование шаблонов. В данном случае некоторые элементы дизайна заменяются пользовательскими тегами, а сама программа сканирует файл на предмет их наличия и заменяет их необходимой информацией. Пример использования шаблонов: <html>
<head> <title>%%PAGE_TITLE%%</title> </head>
<body %%BODY_PROPERTIES%%> <h1>%%PAGE_TITLE%%</h1> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td width="25%">%%PAGE_LINKS%%</td> <td>%%PAGE_CONTENT%%</td> </tr> </table> </body>
</html>Затем пишем программу, просматривающую код шаблона и при выводе заменяющую тэги вида %%SOME%% нужной информацией. Примечание: неплохой класс для использования его в системе шаблонов - FastTemplate, его можно скачать с http://www.thewebmasters.net/. Плюсы использования шаблонов: - Предельно просто и ясно
- Для изменения шаблонов не требуется знание PHP
Минусы использования шаблонов: - Более медленный способ - ведь надо сканировать весь шаблон и лишь потом выводить данные
- Сложнее внедрить на практике
|