![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 11.11.2008
Сообщений: 161
|
![]()
До недавнего времени я думал что обработка php происходит так: код php страницы передается интерпретатору, тот построчно обрабатывает страницу и при встрече с <?php ?> обрабатывает код, после чего передает обычный html серверу, пока не столкнулся с такой конструкцией:
Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
![]()
Вы можете мне не поверить, но обработка производиться сверху вниз.
Более подробно: - Интерпретатор загружает в память всю требуемую страницу (только текст). При этом "съедается" память и процессорное время. - Затем начинается построчная обработка с учетом ветвления, вызова сторонних функций и т.п. То есть обрабатывается только та часть кода, которая должна выполняться при данных переменных. Процессорное время и память тратятся только на исполняемый код. - Если не было критических ошибок, то интерпретатор возвращает результат (текст или страницу). Здесь также тратиться процессорное время в зависимости от объёма выводимой информации и её оформления. Такой стиль написания кода, который Вы привели ("профессиональная вставка") характерен для новичков, использующих визуальные редакторы. Лично Я рекомендую использовать следующую конструкцию: Код:
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 31.08.2010
Сообщений: 40
|
![]()
Как это работает ? Рассмотрим работу PHP- интерпретатора.
Сначала начнем с этапа получения сервером запроса: Получение запроса сервером. Если запрашивается файл с расширением .html, то сервер отправляет все содержимое файла браузеру, а если запрашиваемый файл имеет расширение .php то сервер передает все содержимое файла PHP-интерпретатору на обработку.Обработка файла PHP-интерпретатором. Код:
В строке 6 интерпретатор создает переменную $a со значением 4 и сохраняет ее в памяти. Эта переменная будет храниться в памяти до тех пор пока интерпретатор будет обрабатывать содержимое файла php. В строке о11 оператор echo выводит значение этой переменной, доказывая тем самым что переменная $a все еще храниться в памяти. А теперь перейдем к подробному обсуждению самой конструкции: Код:
Интерпретатор работает так: В первой строке происходит обработка php-втавки которая содержит незаконченное выражение: if($expression) { ( Обратите внимание на отсутствие закрывающей фигурной скобки ). В этом случае интерпретатор ищет закрывающую фигурную скобку (“}”) в php коде и если ее не находит – то возникает ошибка. В данном случае интерпретатор находит ее в строке 3. Теперь весь текст расположенный между открывающей и закрывающей фигурных скобок( строка 2 ) является содержимым блока условного оператора if( строка 1). И в зависимости от значения выражения if($expression) строка 2 либо пропускается (true) либо удаляется (false). В строке 3 обрабатывается условие else аналогично условию if. |
![]() |
![]() |
![]() |
#4 | ||
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
![]() Цитата:
1.Вот как позиционируют PHP его создатели: Цитата:
![]() 3.Каждый разработчик может, конечно, использовать любой удобный лично для него стиль сочетания PHP и HTML - но при этом желательно,чтоб этот стиль был однообразным во всём проекте(проектах). Я имею ввиду - нужно сразу определиться,будет ли это PHP в HTML , или же это будет HTML в PHP - и далее следовать в своём коде этой выбранной позиции. Это повышает читабельность и понимание кода,особенно если далее ваш код будут сопровождать другие программисты,или же вы работаете в команде программистов - где есть свой стиль кодинга и сочетания PHP/HTML - тогда вам нужно привыкать и следовать этому стилю. 4. Ну и всё-таки желательно стремиться к разделению логики и представления - насколько это возможно. Приведённый ТС пример(и подобные) я бы реализовал так: Код:
|
||
![]() |
![]() |
![]() |
#5 | ||
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
![]() Цитата:
Цитата:
- Необходимо учитывать, что на этапе вывода (отправки данных клиенту) очень важен стиль написания кода и используемые функции. Очень часто новички используют не оптимизированные конструкции. |
||
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 09.09.2008
Сообщений: 2,624
|
![]()
Странное обсуждение.
Просто добавлю для топикстартера. Я так думаю ни Andkorol, ни Виталий Желтяков такими способами вставки не пользуются, так же как не пользуются ими и студии. В php уже давно правят шаблонизаторы и/или фреймворки. Программист в идеале вообще не должен видеть разметки. Разметка и код должны "мешаться" только в шаблонах, да и заниматься этим должна машина. + Конечно начинающему web-программисту нужно сначала поделать всё это руками, но и с освоением шаблонизаторов лучше не мешкать.
Стрелок-охотник
Последний раз редактировалось mv28jam; 01.09.2010 в 08:48. |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
![]()
Принципиально не использую шаблонизаторы из-за низкой скорости обработки.
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 09.09.2008
Сообщений: 2,624
|
![]()
Спорное утверждение.
Стрелок-охотник
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
PHP test.php?a=1&b=1 не работает передача параметров | бедный_студент | PHP | 5 | 25.08.2010 23:08 |
Преобразование HTML-PHP в PHP с запуском в командной строке. | TERAB1T | PHP | 4 | 01.06.2010 14:14 |
Обработка ошибок PHP | BloodWizard | PHP | 1 | 30.05.2010 14:21 |
помощь по PHP(форма и обработка) | Eugene811 | PHP | 7 | 11.05.2009 04:17 |