Php код генерации страниц

Создание страниц PHP – печатаем сайт налету!

От автора: вы когда-нибудь наблюдали за работой талантливых писателей? У меня есть один знакомый из «таких». Свои произведения он печатает на машинке: считает, что компьютер не способен принять всю «полноту его мыслей». А я ему в ответ говорю, что он так же, как и любая программа, всего лишь умело манипулирует строковыми значениями переменных. В общем, каждый остался при своем мнении. Сегодня мы рассмотрим создание страниц PHP, чтобы доказать, что этот язык программирования обладает огромным талантом.

Динамический талант

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

Читайте также:  What is php home directory

Использование одного шаблона для создания нескольких веб-страниц.

Интеграция кода PHP в HTML.

Онлайн курс «PHP-разработчик»

Изучите курс и создайте полноценный проект — облачное хранилище файлов

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

Начнем рассмотрение динамического создания страниц на PHP c последнего пункта. Поскольку для изучения первых двух требуется знание третьего. Стартуем!

Разметка основного примера

Сейчас за пару минут «набросаю» разметку самой простой страницы на HTML без особых «изысков».

Источник

Генерация html на PHP

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

Сразу скажу( как многие считают в комментариях), что задача ставилось не написать шаблонизатор (которых и так много) и не заменить шаблонизатор JavaScript. Я прекрасно знаю, что true way это разделять html и данные. Но мне понадобилось писать html в классах, для создания компонентов фреймворка, на подобие CGridView в yii, стоит ли в таких местах выносить html в отдельные файлы решать вам.

Основная цель, избавится от html в классах и функциях.

Простой пример, обычная кнопка:

CHtml::create() ->p() ->a(array('href' => 'http://habrahabr.ru', 'class' => 'btn')) ->text('Перейти') ->render(); 

Ничего хитрого, можно было бы этим и ограничется, но захотелось циклы:

 $arr = array('1' => 'Первый', '2' => 'Второй'); CHtml::create() ->select($options) ->each(CHtml::plainArray($arr, 'value', 'text')) ->option('array("value" => $data->value)') ->text('$data->text') ->end() ->endEach() 
$arr = array( array('value' => '1', 'text' =>'Первый'), array('value' => '2', 'text' => 'Второй') ); 

Теги внутри цикла могут содержать функции или строки с eval выражениями, вложенность любая, пример с таблицей:

$columns = array( array('id' => 'NAME', 'label' => 'Имя'), array('id' => 'AGE', 'label' => 'Возраст') ); $data = array( array('NAME' => 'Петр', 'AGE' => 29), array('NAME' => 'Василий', 'AGE' => 32) ); CHtml::create() ->table() ->thead() ->tr() ->each($columns) ->th() ->text(function($column)< return $column['label']; >) ->end() ->endEach() ->end() ->end() ->tbody() ->each($data) ->tr() ->each($columns) ->td() ->text(function($row, $column) < return $row[$column['id']]; >) ->end() ->endEach() ->end() ->endEach() ->render(); 

Незакрытые теги закрываются автоматически.

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

 class CMyHtml extends CHtml < public function a($options = array()) < $default = array( 'href' =>'javascript:void(0)' ); return parent::a(array_replace($default, $options)); > > 
class CForm < private $_lastLabel = ''; public function __construct(CModel $model, CHtml $html = null) < $this->_model = $model; $this->_html = $html ?: CHtml::create(); > public function __call($method, $ps) < $options = $ps ? $ps[0]: array(); if ($method === 'label') < $this->_lastLabel = isset($options['for']) ? $this->_model->getLabel($options['for']) : ''; > if ($method === 'text' && $this->_lastLabel) < $options = $options ?: $this->_lastLabel; $this->_lastLabel = ''; > $this->_html->$method($options); return $this; > > 

Само решение можно посмотреть и попробовать на github.

Источник

Автоматическое создание веб-страниц с помощью PHP

Если вы подпишитесь на услугу по ссылке на этой странице, Reeves and Sons Limited может получить комиссию. Смотрите наши заявление об этике.

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

1. Сначала нам нужно создать базовый шаблон веб-страницы.

Screen Shot на 2016 05-30-1.56.52 А.М.

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

2. Добавить Bootstrap

Screen Shot на 2016 05-30-1.56.56 А.М.

3. Настроить контейнер

Screen Shot на 2016 05-30-1.56.48 А.М.

Чтобы все было аккуратно и аккуратно, мы должны определить контейнер, в котором мы будем хранить содержимое страницы.

4. Создание веб-формы

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

Screen Shot на 2016 05-30-1.56.43 А.М.

5. Добавить поля формы

  • Фоновое изображение для страницы
  • Название праздника
  • Headline
  • Вступительная речь
  • Некоторая банальная цитата или дополнительная инструкция
  • Атрибуция для банальной цитаты
  • Стиль шрифта, используемый для каждого из четырех текстовых элементов обрамления (вdiviдважды).
  • Диапазон дат, согласно которому ваучеры действительны для
  • Предложите 1 и предложите 2, которые будут рекламироваться на ваучеры.
  • Дополнительные сообщения ваучера (например, условия)
  • Данные для ваучерных QR-кодов, которые будут сгенерированы

Screen Shot на 2016 05-30-1.56.00 А.М.

Screen Shot на 2016 05-30-1.55.54 А.М.

Screen Shot на 2016 05-30-1.55.36 А.М.

И после всех этих усилий мы получим страницу, которая выглядит примерно так:

Screen Shot на 2016 05-30-1.55.22 А.М.

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

6. Создайте файл процессора формы

После создания формы вам понадобится программное обеспечение, которое будет обрабатывать отправленные данные и что-то с ними делать. В этом случае мы будем использовать отправленные данные для создания нового HTML стр.

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

Файл должен быть назван так же, как и действие значение атрибута в объявлении формы, поэтому в нашем примере это будет voucherGen.php, и поскольку мы не указали путь, его нужно будет сохранить в том же месте, что и pageBuilder.php для его работы.

7. Инициализировать переменные

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

Screen Shot на 2016 05-30-1.55.15 А.М.

8. Используйте условные выражения, чтобы установить правильные значения шрифтов.

Сделав это раньше, вы сэкономите время и сэкономите проблемы позже. Мы просто проверяем, какие значения были выбраны, а затем заменяем их фактическими названиями шрифтов.

Screen Shot на 2016 05-30-1.55.10 А.М.9. Начните строить генераторную строку

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

Screen Shot на 2016 05-30-1.55.06 А.М.

Вы, наверное, видите, к чему мы идем. Обратите внимание на точку с запятой в конце. Это важно. Также любые точки с запятой, встречающиеся в тексте (как часть объявления CSS или клиентского скрипта), должны быть заключены в кавычки.

10. Начать добавление тела страницы в строку генератора

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

Screen Shot на 2016 05-30-1.55.00 А.М.

11. Напишите строку генератора в HTML

В этом случае мы жестко кодируем имя файла, но вы можете (и, вероятно, должны) сделать это поле в своей форме pageBuilder.

Screen Shot на 2016 05-30-1.54.55 А.М.

12. Добавить тестовую ссылку

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

Screen Shot на 2016 05-30-1.54.50 А.М.

13. Создание пользовательского файла CSS

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

Screen Shot на 2016 05-30-1.54.45 А.М.

14. Создание и загрузка wrap.png

Чтобы это работало правильно, вам нужно создать одно полупрозрачное изображение в пикселях и назовите его wrap.png затем загрузите его по пути, указанному в custom.css .

15. Загрузите подходящие фоновые изображения и проверьте свой pageBuilder

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

Picture1

Это должно привести к созданию чего-то совершенно подобного:

Screen Shot на 2016 05-30-1.54.11 А.М.

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

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

Источник

Оцените статью