В PHP вы можете написать html вместе с PHP , например:
<html> <head> <?php echo "HTML Title from PHP "; ?> </head> <body> <h1>hello world!</h1> </body> </html>
Я хотел бы знать, что это такое и как он работает, и в том, что было написано, и насколько глубоко мне нужно идти, чтобы понять это?
В настоящее время я слышал о механизмах шаблонов , но есть много шаблонных движков для PHP , поэтому мне кажется, что глупо (для меня) писать механизм шаблонов в движке шаблонов также, как я понял, механизм шаблонов анализирует весь файл только для замены команды, то он также начинает выводить содержимое файла, поэтому мне не кажется, что он будет частью системы, тем самым теряя производительность. (Возможно, я совершенно не прав, но серьезно это то, что я чувствую, когда слышу: P)
Ребята, когда я говорю, что делает HTML, я имею в виду, что делает HTML в PHP? В файле node.js вы не можете писать HTML-код, потому что ничего не обрабатывает.
Попытка избежать слишком большой информации, но вот полный цикл PHP при использовании с Apache в Linux.
Обычная настройка сервера называется стеком LAMP, который представляет собой Linux, Apache, Mysql и PHP. Как правило, вы можете найти десятки готовых к использованию настроек стека LAMP вместе с руководствами для их использования, поэтому в контексте вашего вопроса все, на что вам нужно сосредоточиться, это Apache и PHP.
Когда веб-браузер связывается с веб-сервером Apache с PHP, первым шагом для Apache является поиск нужного контента. Скажем, вы заходите на сайт http://www.mywebsite.com/hello.php, Apache увидит, что вы ищете файл hello.php. На этом этапе из-за суффикса (.php) Apache знает, что этот файл должен интерпретироваться PHP, поэтому он делегирует обработку интерпретатору PHP.
Перенос с Apache на PHP включает в себя множество заголовков, в которых PHP сообщает следующее: какая транзакция обрабатывается (GET / POST / PUT / DELETE), IP-адрес входящего запроса, пользовательский агент браузера (Firefox, MSIE, IPhone и т. Д.), Если есть файлы cookie. Что еще более важно, Apache передает PHP путь к hello.php-файлу на сервере.
В зависимости от конфигурации PHP может потребоваться сделать базовый дом (настройка себя), но в идеальных условиях он готов пойти и открыть hello.php. Часть PHP – это модуль, называемый lexer, который смотрит на hello.php и вычисляет, как для работы с файлом. В приведенном примере очень простой пример может выглядеть так:
Заметьте, я составил большинство кодов T_, но они довольно близки к тому, что реально.
Строка 1 – PHP знает, что это вне сферы видимости, поэтому она сразу передает всю эту строку в веб-сервер Apache. Apache, скорее всего, передаст всю эту строку в веб-браузере.
Строка 2. – T_OPEN_TAG сообщает PHP, что он входит в область PHP и ждет ее первой инструкции.
Строка 3 – T_ECHO сообщает PHP, что собирается сделать оператор эха, поэтому его правила затем начинают искать выражение или строку для вывода.
Строка 4 – Как повезло, следующий токен – это строка, поэтому теперь PHP знает, что будет эхо «HTML-заголовок с PHP»,
Строка 5 – The; говорит PHP, что оператор эха завершен, и что более важно, это синтаксически правильно … поэтому PHP передает строку «HTML-заголовок из PHP» в Apache, которая передает этот onot браузер.
Строка 6 – тег Close?> Сообщает PHP, что он оставляет область языка PHP, поэтому она восходит к гораздо более простому набору правил
Строка 7 – Как и строка 1, вся строка передается Apache для передачи в веб-браузер
На данный момент PHP достигает того, что называется EOF или конец файла, и знает, что он завершил обработку файла hello.php. Он выполняет очистку, а затем сообщает Apache, что это сделано.
На данный момент запрос выполнен в основном, Apache скорее всего повесит трубку в веб-браузере, отправив уведомление о завершении всего содержимого.
Дайте мне знать, если у вас есть какие-либо вопросы или вам нужно указать, куда идти дальше. Также обратите внимание, что здесь осталось много деталей для краткости / здравого смысла, но для того, чтобы просто понять, как птичий взгляд на отношения PHP с веб-браузером и веб-сервером, этого должно быть достаточно для начала.
$test = 'Hello world <' . '?' . 'php echo \'this is in scope\'; ?' . '> and we\'re done'; $tokens = token_get_all($test); print_r($tokens);
Результатом будет строка токенов реального мира, созданная PHP. Каждый токен может быть либо строковым, либо трехэлементным кортежем / числовым массивом, где индекс 0 == идентификатор Token, индекс 1 == raw string, и я не могу на всю жизнь помнить, что такое третий элемент. Используйте token_name, если вам интересно, что такое имя каждого токена.
Во-первых, PHP – это механизм шаблонов , когда вы используете его, как в вашем примере.
Вам действительно не нужно ничего больше, если вы хотите сохранить его простым.
Ваш браузер только когда-либо делает HTML. Независимо от того, написано ли это через PHP, javascript или asp, то, что работает, что означает текст (поскольку html – это только текст), является вашим браузером.
что-нибудь внутри <? ?>
<? ?>
braces – это php-код – он выполняется на сервере, а затем выводит простой HTML-код клиенту, после чего он отображает его веб-браузер клиента.
Посмотрите на эту диаграмму .
обработанный конечный продукт обрабатывается вашим веб-браузером. (FF написано на C / C ++)
перед передачей apache запускает все скрипты php через PHP (препроцессор), написанный на C
если вы используете механизм шаблонов PHP (например: Smarty ), который написан на самом PHP
если вы действительно заинтересованы в производительности, переключитесь на другой язык. Механизмы PHP-шаблонов не предназначены для сохранения циклов процессора или даже скорости, вместо этого они повышают производительность и ремонтопригодность, кроме того, они предоставляют разработчикам интерфейсов возможность поддерживать более сложные шаблоны, не зная PHP, что увеличивает ценность их работы, разработчикам делать более серьезную кодировку.
Ну, вам нужно понять историю веб-разработки, чтобы дать вам «ответ» на ваш вопрос.
В 199x при запуске веб-разработки многие люди используют Perl. В эти дни вы часто пишете такой код:
print "<html>"; print " <head>"; print " <title>", get_site_name(), "</title>"; print " </head>"; print "<body>Hello, World!</body>"; print "</html>";
Как вы можете видеть в этом примере, в наши дни вы часто заканчиваете писать много HTML и просто включаете некоторые небольшие динамические материалы. Как счетчик, часы, показывающие время или другие мелочи. В эти дни PHP родился, чтобы сделать этот процесс намного проще. Вместо написания кода, который печатает много HTML, PHP был / является механизмом для создания шаблонов, который позволяет вам писать HTML и просто включать ваш код. В эти дни вы, вероятно, закончите писать 90% HTML и 10% от вас логики. В эти дни это было всего лишь то, что вам нужно, и это было намного проще.
Но время изменилось. Сегодня веб-разработка стала намного сложнее, чем в предыдущие дни. Сегодня вы, вероятно, пишете 90% логики и всего 10% HTML. Сегодня почти все автоматически генерируется и поступает из базы данных. Из-за того, что вы подняли цвет лица, сегодня вы часто пишете свое приложение PHP, например
<?php echo "<html>"; echo "<head>"; echo "..."; echo "</html>"; ?>
Как видите, эволюция идет назад. И не имеет большого значения, как в предыдущие дни. PHP-программы больше всего заканчивались тем, что запускали php Tag и генерировали все, и отсылали все, что нужно, как в старые времена с Perl.
Но, это все еще не enoug, вы заканчиваете, где вы начали. Поскольку сегодня у вас есть гораздо больше логики для написания в вашем приложении, это хорошая идея, чтобы разделить ваше приложение на многие стороны. Вы разделяете свою прикладную логику и как вы должны отображать свои данные.
Сама логика написана на PHP, но для отображения данных люди склонны использовать другие шаблонные двигатели, которые сегодня намного более современные и лучше подходят для нужд.
Да, кажется, немного неудобно иметь механизм создания шаблонов, который поднимается на язык общего назначения, где записывается модуль Templating Engine, но так оно и есть.
Вопрос о том, как HTML визуализируется, хорошо, что у вас есть интерпретатор «php», который часто напрямую встроен в Apache (mod_php), который выполняет все это, но для этого описания уже есть лучшие ответы.