68925

Структура програми в РНР. Стандартний вид РНР-сценарія

Лекция

Информатика, кибернетика и программирование

Це означає наступне: Обробка PHPкоду проводиться на стороні сервера ще до того як Web-сторінка буде передана браузеру. Виходить що PHP є транслюючим інтерпретатором або інтерпретуючим транслятором як кому більше подобається. Варто відзначити що PHP версії 3 був чистим...

Украинкский

2014-09-27

87 KB

0 чел.

Лекція № 1

Тема: Структура програми в РНР. Стандартний вид РНР-сценарія.

План

  1.  Загальні поняття і опис РНР.
  2.  Перша програма (скрипт) на РНР.

Загальні поняття і опис РНР

Спершу познайомимося з самим РНР. Мова програмування РНР спеціально призначена для роботи в Інтернет, що поєднує достоїнства мов C і Perl. Синтаксис мови дуже сильно нагадує C — якщо ви програмуєте на C, то скоро ви це відмітите.

У офіційній документації мова РНР подається як server-side HTML-embedded scripting language, тобто, як вбудована в HTML скриптова мова з обробкою на сервері. Це означає наступне:

Обробка PHP-коду проводиться на стороні сервера ще до того, як Web-сторінка буде передана браузеру. Це, до речі, відрізняє мову РНР від мови JavaScript.

РНР-код може бути безпосередньо вбудований в HTML-код сторінки. Цим він відрізняється від Perl і відрізняється в кращу сторону.

Ми знаємо, що мови програмування бувають двох видів: інтерпретатори і компілятори. Чим же є РНР? Щоб з'ясувати це, нам потрібно розібратися в термінології. Програма, що переводить код, написаний на одній мові програмування, на іншій називається транслятором. Наприклад, програма р2с, яка переводить Pascal-код в С-код, є транслятором. Компілятор — це теж транслятор. Він переводить код, написаний на мові високого рівня, в машинний код. Мова високого рівня зрозуміла людині і близька до людського (Pascal, С, РНР), а машинний код (0 і 1) зрозумілий комп'ютеру — з двійковими даними комп'ютеру простіше працювати. В результаті роботи компілятора, як правило, створюється двійковий виконуваний файл (у Windows/DOS — з розширенням .ехе або com), який можна виконувати без допомоги компілятора.

Інтерпретатор — це абсолютно інший тип мови програмування, що не має нічого спільного з компілятором. Інтерпретатор нічого не переводить, а тільки виконує код. Він аналізує код програми і виконує кожну її строчку. Наприклад, припустимо, що інтерпретатор знайшов рядок «А = А + 7». Він аналізує і перевіряє її коректність, а потім шукає змінну А.. Якщо  змінна була оголошена до рядка «А = А + 7», то інтерпретатор збільшує її значення на 7 — він виконує код. Була б замість рядка «А = А + 7» рядок print "Hello", наш інтерпретатор вивів би на екран рядок «Hello». Виконавши код, інтерпретатор не створює виконуваний файл, тому для наступного запуску вашого коду знову потрібний інтерпретатор.

По продуктивності інтерпретатори значно поступаються компілятору, оскільки машинний код виконується набагато швидше. Зате інтерпретатори дозволяють повністю контролювати програму під час її виконання.

РНР не є ні компілятором, ні інтерпретатором. РНР є щось середнє, між компілятором і інтерпретатором. Розглянемо, як РНР обробляє сценарії. На вхід РНР подається сценарій. Він переводить (транслює) його в спеціальний байт-код (внутрішнє уявлення). Потім РНР виконує байт-код (а не код самої програми!), при цьому він не створює виконуваний файл. Байт-код значно компактніший ніж звичайний код програми, тому його легше (і швидше) інтерпретувати (виконувати). Як бачите, РНР більше є інтерпретатором, ніж компілятором. Для чого потрібна була така подвійна робота — спочатку переводити у внутрішнє уявлення, а потім — виконувати? Невже не простіше відразу виконати кожен рядок програми?

Вдумайтеся в цей вираз «кожен рядок програми». Уявимо, що у нас є цикл:

for (I=0;I<10;I++)

{

оператор_1;

оператор_10 0;

}

Наш цикл «крутитиметься» не нескінченно, а всього лише десять разів. За кожний з цих десять проходів інтерпретатор повинен проаналізувати і виконати СТО рядків коду. Разом йому потрібно проаналізувати і виконати (я не дарма двічі згадую цю фразу) 10x100 = 1000 рядків коду. Якщо перевести один раз весь цикл в байт-код, то аналізувати йому доведеться в 10 разів менше! А це означає, що ваші сценарії виконуватимуться в 10 разів швидше.

Виходить, що PHP є транслюючим інтерпретатором або інтерпретуючим транслятором — як кому більше подобається. Варто відзначити, що PHP версії 3 був «чистим» інтерпретатором, і лише з появою четвертої версії сценарії стали виконуватися значно швидше. П'ята версія, як і четверта, є інтерпретуючим транслятором.

Проте, щоб не робили розробники PHP, двійкові виконувані файли, що відкомпілювалися, працюють значно швидше — в десятки, а може і в сотні разів. Але продуктивність PHP цілком достатня для створення Інтернет-додатків. Зараз поясню чому.

Хай вищезазначений цикл, переписаний на мові С, виконується за 0.1 секунди. На мові PHP він виконуватиметься в 10 разів довше — за 1 секунду. Проте передача даних користувачеві — результатів роботи циклу — триватиме 3 секунди. Отримуємо, відповідно, в сумі 3.1 і 4 секунди. Погодитеся, різниця між 3.1 і 4 секунди незначна — як користувач Інтернету ви навіть її не відчуєте. Навіть якщо у вас швидкий виділений канал, різниця все одно не відчуватиметься — може позначитися навантаження на сервер або інші чинники, навіть не залежні від PHP.

Використання інтерпретатора (а значить і PHP) має свої незаперечні переваги:

Вам не потрібно піклуватися про звільнення виділеної пам'яті, вам не потрібно закривати файл після закінчення роботи з ним — за вас все зробить інтерпретатор,    оскільки ваша програма виконується під його пильним контролем.

Вам не потрібно думати про типи змінних, вам також не потрібно оголошувати змінну до його першого використання.

Відладка програми і виявлення помилок істотно спрощуються — інтерпретатор неодмінно повідомить вас, якщо щось пішло не так.

Ви можете написати програму, яка писатиме іншу програму (так, це так), а потім включить код тільки що написаної програми і виконає його. Про цю можливість ми поговоримо окремо, коли наступить час.

Пишемо першу програму (скрипт) на PHP

Згідно традиції, знайомство з будь-якою мовою програмування починається з програми Hello, World! Ця програма нічого особливого не робить, вона тільки виводить на екран напис «HelloWorld!». Ми зараз небагато відступимо від традиції і напишемо програму, яка вітатиметься не зі всім світом (все одно цього ніхто не почує), а тільки з нами. Текст програми приведений в лістингу.

Лістинг. Перша програма (скрипт) на PHP

<?

echo "<html><body><hl>";

echo "Hello $my_name";

echo "</hl></body></html>";

?>

Перш, ніж запустити програму, її потрібно правильно «встановити» на сервері. Для цього збережете сценарій під ім'ям first.php і скопіюйте його в каталог DocumentRoot вашого сервера. Якщо ви працюєте під Linux, таким каталогом буде /var/www/html (у старих версіях — /home/ httpd/html). Якщо ви працюєте під Windows і слідували моїм рекомендаціям , каталогом DocumentRoot буде c:\www\html.

На відміну від звичайних CGI-програм, сценарії PHP є для сервера звичайними документами і їх не потрібно поміщати в каталог cgi-bin. Також не потрібно робити їх виконуваними (у випадку, якщо ви працюєте під Linux).

Виконавши вищезгадані рекомендації по установці, в рядку браузера введіть http://localhost/first.php?my_name=Denis. В результаті у вікні браузера ви побачите Hello,   Denis

Якщо тепер сторінку, відображену в браузері, переглянути у вигляді HTML-коду, то можна побачити наступне:

<html><body><hl> Hello,   Denis </hl></body></html>

Як бачите РНР-код виконався, підставив потрібне значення змінної $my_name і видав готову HTML-сторінку.

Це ми РНР-сценарій запустили через CGI-інтерфейс. При цьому ми передали змінною $my_name значення Denis. Проте будь-яку РНР-програму можна запустити так: php file.php. При цьому CGI-змінні будуть недоступні — адже ви запустили програму з командного рядка. Демонстраційні РНР-програми, не вимагаючі CGI.

Примітка.

Вводити текст програми краще в текстовому редакторові, що підтримує підсвічування синтаксису PHP. Якщо ви працюєте під Linux, можу порекомендувати трьох редакторів: До Write (команда kwrite), Kate (kate) і Quanta (quanta). Під Windows також не складає труднощів знайти такий редактор (у Інтернеті). Якщо ви не знайдете редактор з підсвічуванням синтаксису PHP, можна використовувати редактор з підсвічуванням синтаксису мови С.

Тепер розглянемо саму програму. Код PHP полягає в спеціальні теги <? і ?>. Після тега початку сценарію (<?) слідує перший оператор — echo. Оператора echo здійснює виведення інформації. Його з повною упевненістю можна назвати найголовнішим оператором — адже без нього було б неможливе виведення інформації в браузер і користувач не побачив би результату роботи сценарію.

Що виводиться оператором echo рядок полягає в лапки. Перший оператор виводить теги HTML, BODY і H1. В принципі, можна було б і не виводити перші два тега, але потрібно звикнути до дисципліни із самого початку.

Другий оператор echo "Hello, Smy_name"; виводить слово Hello і значення змінної $my_name. Щоб якось відрізняти змінні від звичайних рядків, перед ім'ям змінної ставиться знак долара. І це стосується не тільки рядків, у будь-якому випадку перед ім'ям змінної потрібно ставити знак долара. Знаю, що це незвично, але ви досить швидко звикніть до цього. Правда, спочатку ви припускатиметеся багато «грошових» помилок. Привласнення змінній якого-небудь значення здійснюється оператором привласнення, який позначається значком «=» (рівно). Приклади використання змінних:

$i=0; $d=7; $i=5   +   $d//   $i=12

Ще один приклад:

$wordl = "Hello"; $word2 = "world";

echo "$wordl $word2"; echo "$wordl, word2";

Перший оператор виведе в браузер рядок «Hello, world», а другою — «Hello, word2». В даному прикладі ми визначили дві змінні — $wordl і $word2. Так як ми забули дописати символ долара в другому операторові, PHP сприйняв «word2» як звичайний рядок, а не як змінну.

Зверніть увагу, що в нашому першому прикладі (first.php) ми не оголосили змінну $my_name. Її оголосив автоматично сам PHP — адже це параметр, переданий сценарію браузером. У цьому полягає ще одна перевага PHP перед іншими мовами програмування.

Ви коли-небудь програмували на С або Pascal? Звернення до параметра, переданого програмі, здійснюється по номеру, наприклад, прочитати значення параметра номер 1 можна, викликавши функцію ParamStr(l), а не по імені. Відчуваєте різницю? Тобто, якщо ми програмуємо на Pascal або С, нам обов'язково потрібно знати номер параметра. Наприклад, нам потрібно передати програмі два параметри — файл-джерело і файл-призначення. Програма повинна скопіювати дані з джерела в призначення. Якщо ми переплутаємо порядок файлів, може відбутися непоправне — файл-джерело буде перезаписаний файлом-призначення. У PHP нам немає ніякої різниці, як слідуватимуть параметри:

src=filel&dest=file2   або   dest=file2&src=filel

(так передаються браузером параметри нашому сценарію).

Дуже зручно! І це не говорячи вже про те, що PHP сам виконує розбір переданого рядка, оголошує і ініціалізував змінні.

Третій оператор нашої програми особливих коментарів не потребує, як і тег закінчення РНР-програми (?>).

Модифікуємо небагато наш текст програми first.php, щоб він виглядав так:

<?

echo "<html><body><hl>";

echo "Hello $my_name";

echo "<br> $var";

echo "</hl></body></html>";

?>

Якщо ми не передамо програмі параметр $var, тобто, як завжди, запустимо програму тільки з параметром $my_name, то у вікні браузера ми побачимо повідомлення про те, що змінна $var не визначена. Для того, щоб позбавитися від цієї помилки, безпосередньо перед оператором echo   "<br>   $var"; додайте рядок:

$var="   ";

Змінна буде оголошена і ініціалізувала. У PHP, як і в С++, ви можете оголошувати змінні в будь-якому місці сценарію, але до місця першого використання змінної. Як ви вже знаєте, будь-який інший інтерпретатор, наприклад, Perl, в подібній ситуації згенерував би повідомлення 500: «Помилка сценарію». Інтерпретатор PHP вирішує проблему просто і елегантно, позбавляючи тим самим Web-програміста від проглядання багатотомних журналів Web-сервера.


 

А также другие работы, которые могут Вас заинтересовать

81911. Контроль как функция менеджмента 41.93 KB
  Существует три аспекта управленческого контроля: установление стандартов точное определение целей которые должны быть достигнуты в определенный отрезок времени. Необходимость контроля обусловлена следующими обстоятельствами: потребностью организации процесса производства в соответствии с имеющимися резервами и ресурсами; требованиями потребителей к качеству стандарту и сертификации выпускаемой продукции; изменяющимися внутренними и внешними условиями производства необходимостью выявления тенденций меняющегося спроса и предложения...
81913. Этапы контроля в менеджменте 39.29 KB
  Независимо от типов и количества контрольных систем необходимых организации существует четыре основных этапа любого процесса контроля. Первый этап в контрольном процессе установление стандартов. Второй этап в процессе контроля измерение фактических результатов деятельности контролируемого объекта. На этом этапе необходимо определить качественные и количественные методы измерения.
81914. Новейшие тенденции в менеджменте в области контроля 37.86 KB
  Современные тенденции развития контроля. Контрольные функции традиционно осуществляемые централизованно в коммерческой фирме ее руководством а в государстве центральными органами постепенно перераспределяются между: верхними звеньями управления; сторонними организациями специализирующимися на функциях контроля; потребителями продукции; низовыми звеньями управления Часть контрольных функций передается внешним организациям. Изменение содержания контроля и новые методы его осуществления.
81915. Информация как основа коммуникаций и ее значение в менеджменте 38.97 KB
  Процесс управления рассматривается как процесс восприятия преобразования и передачи информации. Основой управления является принятие решений которые основаны на использовании информации. Степень обоснованности решений зависит от полноты достоверности и своевременности информации. происходит передача информации для принятия и реализации решения.
81916. Сущность и виды коммуникаций 40.32 KB
  Установить взаимосвязь между людьми в организации. Сформулировать общие взгляды на внутреннюю среду организации. Организовать совместную работу коллективов с целью выполнения задач организации. Виды коммуникаций: Вертикальная ϶ᴛᴏ обмен информацией между руководителем и подчиненными; Горизонтальная представляет собой процесс передачи информации между сотрудниками одного уровня; Вербальная процесс общения с целью передачи информации при помощи слов; Невербальная общение с помощью мимики жестов взглядов; Формальная Неформальная...
81917. Коммуникативный процесс в менеджменте 55.81 KB
  Декодирование это перевод символов отправителя в уме получателя. Если символы избранные отправителем имеют точно такое же значение для получателя последний будет знать что именно имел в виду отправитель когда формулировалась его идея. Получатель становится отправителем и проходит через все этапы процесса обмена информацией для передачи своего отзыва начальному отправителю который теперь играет роль получателя. Эффект коммуникационного процесса ϶ᴛᴏ изменение в поведении получателя кᴏᴛᴏᴩые происходят в результате принятия сообщения.
81918. Коммуникативные барьеры и способы их преодоления в менеджменте 41.28 KB
  Содержательные барьеры проблемы в понимании смысла и значения отправленного или полученного сообщения Они делятся в свою очередь на: фонетические использование элементов из других языков и диалектов дефекты речи и дикции невнятность речи нарушения темпа речи наличие значительного количества звуков и словпаразитов; семантические вложение различного содержания использования жаргонов и слешей; стилистические несовпадение стиля речи коммуникатора отправителя с содержанием сообщения; логические различные логические системы...
81919. Стили управления в организации 38.89 KB
  Авторитарный стиль сосредоточение на работе и полное пренебрежение людьми. Авторитарный жесткий стиль может быть оправдан в группе с неразвитыми материальными и высшими потребностями а также в экстремальных ситуациях. Либеральный стиль сосредоточение на человеке стиль невмешательства в дела подчиненных безынициативность ожидание указаний сверху руководитель непоследователен в своих действиях легко поддается мнению других влиянию некомпетентен в решении вопросов его характеризует боязнь принятия решений перекладывание дел...