Применение PHP: Методы на стороне сервера, которые помогут вам в разработке интерфейсов

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

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

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

Приступая к работе с основами PHP

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

Так как PHP - это язык серверной стороны, то PHP-файлы (например, index.php или myAwesomeCatPhotos.php) преобразуются на сервере в HTML, перед тем, как быть отправленными в браузер. По этой причине вы должны размещать PHP-файлы на сервере во время работы с ними.

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

Одной из замечательных особенностей PHP является то, что вы можете смешивать его с обычным HTML в PHP-файле:

<div>
  <?php 
    echo "Привет, Мир";
  ?>
</div>

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

Эхо-функция выводит все, что следует в разметке непосредственно за ней. В нашем случае "echo" будет выводить строку со словами "Привет Мир". В PHP окончание оператора запятой является обязательным; пропущенная запятая являются еще одним распространенным источником ошибки в скриптах.

Этот простой PHP-код трансформируется в:

<div>
  Hello World
</div>

Переменные в PHP могут быть представлены в таком виде: $aWord, $manyWords, $a_lot_of_numbers, $a4 и т.д. Ключевым моментом является символ $ в начале имени переменной.

С помощью переменных мы могли бы написать приведенный выше код следующим образом:

<div>
  <?php 
    $whatDoYouSay = “Привет, Мир”;
    echo $whatDoYouSay;
  ?>
</div>

PHP также поддерживает циклы for и оператор if. Оператор if задает условие и выполняет задачу, если условие удовлетворяется.

Он может быть объединен с оператором else, который выполняет действие, если условие не удовлетворяется:

<?php
  if ($a == 7) {
    echo "Текущее значение переменной $a - 7.";
  } else {
    echo "Значение переменной $a отлично от 7, и ей должно быть стыдно за это.";
  }
?>

Если значение $a равно 7, то будет выводиться первая строка, но если $a равно чему-либо другому, например, 5, будет выводиться второй оператор.

Цикл for используется, чтобы повторять выполнение набора кодов, пока не будет выполнено некоторое условие:

<?php
  for ($d = 0; $d<7; $d++) {
    echo $d;
  }
?>

Этот код означает, что мы устанавливаем первоначальное значение переменной $d 0, и мы будем выводить значение $d до тех пор, пока оно будет меньше 7. В конце каждой итерации цикла мы будем увеличивать значение $d на единицу. Что даст нам следующий набор чисел "0123456".

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

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

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

Создание простых шаблонов PHP

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

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

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

Естественно, мы можем сделать то же самое с элементом подвала и любым другим фрагментом, который вы, возможно, захотите использовать на нескольких страницах:

<?php include("includes/header.php"); ?>

<div>Основной контент этой страницы - это все, что сверх этого.</div>

<?php include("includes/footer.php"); ?>

В этом примере header.php и footer.php хранятся в папке "includes", и на каждый из них ссылается основной файл. Представьте себе, сколько времени это может сэкономить разработчику.

Обслуживание различных файлов в зависимости от страницы

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

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

Для выполнения этого приема мне сперва нужно получить имя текущего файла и отбросить его расширение:

<?php
  $file = basename($_SERVER['PHP_SELF']);
  $pagename = str_replace(".php","",$file); 
?>

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

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

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

Мы будем использовать комбинацию операторов if/else, чтобы определить, является ли текущая страница страницей контактов. Если это так, тег скрипта ссылается на файл contact.min.js, который и будет выводиться, если нет, то мы выводим файл global.min.js:

<?php
  if ($pagename == 'contact') {
    echo '<script src="js/contact.min.js"></script>';
  } else { 
    echo '<script src="js/global.min.js"></script>';
  }
?>

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

С RESS мы можем пойти еще дальше

Мы можем пойти еще дальше, и использовать подобный метод для обслуживания различных файлов в зависимости от устройств вывода. Это будет простым, но наглядным примером решения RESS.

RESS или Responsive Design with Server Side Components (Адаптивный дизайн с использованием компонентов на стороне сервера) означает, что вы добавляете немного логики на стороне сервера в ваш набор инструментов адаптивного дизайна, с целью создания таких удивительных вещей, как уменьшение объема некоторых страниц.

Для этого нам понадобится PHP-библиотека Mobile Detect, которая обеспечивает простой способ определить, какой тип устройства используют ваши посетители.

Включите библиотеку в каком-нибудь месте вашего проекта, я бы рекомендовал поместить ее в папку "scripts", а затем включить ее через функцию require_once.

Вам также нужно будет инициировать экземпляр объекта класса Mobile_Detect, что я рекомендовал бы делать сразу после включения библиотеки в файле заголовка:

<?php
  require_once 'scripts/Mobile_Detect.php';
  $detect = new Mobile_Detect;
?>

Теперь я могу использовать, пару if/else в подвале для определения, использует ли посетитель мобильное устройство и применять ли нам соответствующий файл JavaScript.

ПРИМЕЧАНИЕ: Поскольку Mobile Detect рассматривает планшеты как мобильные устройства, я также проверяю, является ли устройство планшетом:

<?php
  if (isset($detect) && $detect->isMobile() && !$detect->isTablet()) {
    echo '<script src="js/global-mobile.min.js"></script>';
  } else{ 
    echo '<script src="js/global.min.js"></script>';
  }
?>

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

Шаблоны автоматической разметки

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

К счастью, Лара Шенк недавно показала замечательное решение для подобных случаев:

// Функция для вывода изображений
function printGalleryItem($path, $alt) {
  echo '<div class="gallery__item">';
    echo '<img src="' . $path . '" alt="' . $alt . '">';
  echo '</div>';
}

// Циклы для обработки папки с изображениями и разметка printGalleryItem для каждого из них
function printGallery($dir, $alt) {
  echo '<div class="gallery">';
  $fdir = 'assets/img/galleries/' . $dir . '/*';
  foreach (glob($fdir) as $img_path) {  
    printGalleryItem($img_path, $alt);
  }
  echo '</div>';
}

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

Первая функция printGalleryItem() принимает путь к изображению и текст для тега alt и выводит тег изображения с контейнером <div>. Вторая функция printGallery() принимает путь к папке, содержащей изображения и строку, которая используется в тегах alt изображений.

Функция сначала выводит контейнер для галереи, а затем использует версию цикла, под названием foreach, чтобы перебрать массив путей к изображениям, присвоенных функцией glob, и применяет их для нашей функции printGalleryItem().

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

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

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

Это только верхушка айсберга

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

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

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

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

Перевод статьи «A Sprinkling of PHP: Server-Side Techniques to Help with Front End Tasks» был подготовлен дружной командой проекта Сайтостроение от А до Я.

25 июля 2014 в 15:03
Материалы по теме
{"url":"http://www.fastvps.ru/", "src":"/images/advbanners/fastvps.png", "alt":"Хостинг Fastvps.ru. Наш выбор!"}
Заработок