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

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

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

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

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

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

Интеграция кода 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(); 

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

Читайте также:  Javascript событие метрика примеры

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

 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.

Источник

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Php class to generate html code

License

Airmanbzh/php-html-generator

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Create HTML tags and render them efficiently.

return HtmlTag::createElement(); // returns an empty HtmlTag Container
return HtmlTag::createElement('a'); // returns an HtmlTag containing a 'a' tag
  • it always generates valid HTML and XHTML code
  • it makes templates cleaner
  • it’s easy to use and fast to execute
echo(HtmlTag::createElement('a'));
$tag = HtmlTag::createElement('a') echo( $tag );
echo HtmlTag::createElement('div');
echo(HtmlTag::createElement('p')->text('some content'));
echo(HtmlTag::createElement('div')->addElement('a')->text('a text'));
$container = HtmlTag::createElement('div'); $container->addElement('p')->text('a text'); $container->addElement('a')->text('a link');

Classics attributes (method : ‘set’)

Читайте также:  Html css rgb color

$tag = HtmlTag::createElement('a') ->set('href','./sample.php') ->set('id','myID') ->text('my link'); echo( $tag );
a href='./sample.php' id='myID'>my linka>

Shortcut to set an ID attribute (method : ‘id’)

$tag = HtmlTag::createElement('div') ->id('myID'); echo( $tag );

Class management (method : ‘addClass’/’removeClass’)

$tag = HtmlTag::createElement('div') ->addClass('oneClass') ->text('my content') echo( $tag );
div class pl-s">oneClass">my contentdiv>
$tag = HtmlTag::createElement('div') ->addClass('aClass') ->addClass('anothereClass') ->text('my content') echo( $tag );
div class pl-s">aClass anothereClass">my contentdiv>
$tag = HtmlTag::createElement('div') ->addClass('firstClass') ->addClass('secondClass') ->text('my content') ->removeClass('firstClass'); echo( $tag );
div class pl-s">secondClass">my contentdiv>

Text and content are generated according to the order of addition

$tag = HtmlTag::createElement('p') ->text('a text') ->addElement('a') ->text('a link');

To generate content before text, 2 solutions :

$tag = HtmlTag::createElement('p') ->addElement('a') ->text('a link') ->getParent() ->text('a text');
$tag = HtmlTag::createElement('p'); $tag->addElement('a')->text('a link'); $tag->text('a text');

Источник

Урок 2. Создаём первую страницу на PHP. Операторы вывода

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

О PHP скажу коротко — этот язык программирования используется по всему миру и на нём можно создавать сайты всех уровней сложности, от сайтов-визиток до крупных порталов. Думаю, уже для многих не секрет, что крупнейшие социальные сети facebook.com (с нуля на php) и vk.com (движок на php) были написаны на языке PHP. Так что делаем выводы и начинаем работу!)

Принцип работы кода

Код PHP отрабатывается на стороне сервера. То есть готовой страницы нет. Например, в коде дана команда собрать данные о том, сколько пользователей зарегистрировано на данный момент на сайте. Посетитель сайта нажимает на ссылку все пользователи. Он хочет получить динамические данные, то есть те, которые постоянно изменяются. После того, как подсчёт на сервере будет закончен, с сервера придут данные в виде сгенерированного HTML-кода страницы с количеством пользователей. В результате, после клика-запроса по ссылке, пользователь получает страницу. Если просмотреть код полученной страницы, то можно увидеть только HTML, а PHP-код будет недоступен для просмотра. Грубо говоря, PHP — это указания серверу по тому, как и из каких блоков сделать страницу.

Как выглядит PHP код и куда его вставлять?

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

Код PHP (файл index.php)

 







echo "Привет, мир!";
?>



Демонстрация Скачать исходники
Результатом работы кода будет вывод обычного текста Привет, Мир!. Спросите зачем писать код php, чтобы вывести обычный текст? Оператор echo, о котором поговорим чуть позже, нужен не просто для вывода текста. Чаще echo используют для отображения результата работы какой-то функции, которая производила подсчёт или брала данные из БД ( Что такое База данных? ). То есть для отображения динамических данных.

Оператор echo в PHP

Как Вы уже поняли, оператор echo нужен для вывода данных. Содержимое (в нашем случае пока только текст) берём в кавычки, а в конце ставим точку с запятой ; это обозначает конец работы оператора.

В программирование при создании первой страницы принято употреблять фразу Hello, World! — то есть Привет, мир! Именно её и используем. В примере не будем использовать html, так как это не обязательно.

Программа выведет Привет, Мир!.
В самом первом примере мы вставляли в html небольшой код php. Теперь, наоборот, внедрим в php-код элементы html.

 echo ""; 
echo '';
echo "";
echo "";
echo "";
echo "

Привет, Мир!

";
echo "";
?>

В результате получим пустую страничку с заголовком Привет, Мир!

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

Оператор print в PHP

В отличие от оператора echo, print выводит данные с учётом пробелов и переносов текста. Имеет некоторые ограничения — можно использовать только один аргумент, echo несколько. Отрабатывает дольше, чем echo. В дальнейшем будем прибегать к данному оператору при написании функций.

 print "Привет, Мир! 
Вторая строка текста"; // результат будет выведен в две строки
?>

Текст будет выведен также, как и написан.

Оператор вывода — синтаксис heredoc PHP

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

 echo 

Пример


Пример вывода большого объема текста с использованием html


Второй абзац такого же объёмного текста.


HERE;
?>

Памятка к уроку

Код PHP может:

1. не содержать ни одного html-элемента. Страница и текст всё равно отобразятся. html нужен для красивой разметки содержимого.

2. быть как включен в html-код, так и содержать его внутри своих операторов вывода (echo, print и тд). Главное не забывать конструкцию

3. страницы с php-кодом должны иметь соответствующее расширение: .php .phtml

Со следующих уроков мы разберём основы создания сайтов на php, в которых увидите все плюсы использования данного языка!

Источник

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