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-сервера.


 

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

27964. Системный подход к решению психофизиологической проблемы 26.99 KB
  идеи о функциональном единстве мозга и его связи с поведением и психикой начали возникать более 100 лет назад. В конце прошлого века в основном в русле клинической неврологии стали высказываться идеи о единстве функционирования частей мозга и связи этого единства с умственными возможностями человека. Он стойко придерживался взгляда что в коре мозга нет такого поля которое бы не принимало участия в осуществлении интеллектуальных функций [2]. Микросистемы сопоставимы с отдельными структурными образованиями мозга.
27965. Краткая история проблемы мозговой локализации психических функций 26.04 KB
  Краткая история проблемы мозговой локализации психических функций. Центральная проблема нейропсихологии – проблема локализации высших психических функций связана с решением вопроса о том какова мозговая география различных психических функций и как исследуя нарушения психических функций при повреждениях мозга установить их причину и локализацию в головном мозге. Такое определение позволяет сформулировать центральные вопросы нейропсихологии: 1 теоретический – в соответствии с какими принципами и как размещаются в мозге человека...
27966. Рефлекс и реактивное поведение. Трехфакторная модель «значимого другого»: основные положения и методическое обеспечение 22.96 KB
  Важно чтобы мозг животного был свободен от других видов деятельности то есть его не должна отвлекать какаято посторонняя потребность и находиться на определенном уровне возбуждения На фоне различных видов тороможения или отвлекающих факторов обучение происходит медленно или не происходит вовсе. Кооперация – необходимый элемент совместной деятельности порожденный ее особой природой. Леонтьев называл две основные черты совместной деятельности: разделение единого процесса деятельности между участниками; изменение деятельности...
27967. Предметный образ и его семантическая многоуровневость 84.99 KB
  Поскольку состояние контактного взаимодействия анализатора с раздражителем непосредственно заключающее в себе ввиду своей двусторонности основу предметного изображения имеет место именно в осязании и прежде всего в тактильных ощущениях постольку простейший предметный образ формируется как рефлекторный эффект деятельности кожномеханического анализатора. На высших уровнях осязательной репрезентации состояние взаимодействия рецептора с раздражителем осуществляется и поддерживается на основе активной деятельности руки как специфического...
27968. Психофизическая зависимость и психофизическая функция 40.9 KB
  Типы и способы межличностоной и межгрупповой коммуникации. Типы и способы межличностоной и межгрупповой коммуникации. Когда говорят о коммуникации в узком смысле слова то прежде всего имеют в виду тот факт что в ходе совместной деятельности люди обмениваются между собой различными представлениями идеями интересами настроениями чувствами установками и пр. Все это можно рассматривать как информацию и тогда сам процесс коммуникации может быть понят как процесс обмена информацией.
27969. Восприятие пространства и удаленности; монокулярные и бинокулярные признаки глубины 30.95 KB
  Восприятие пространства и удаленности; монокулярные и бинокулярные признаки глубины Чувственное отражение субъективный познавательный процесс и результат этого процесса где объективное познание выступает в виде чувственной формы а именно в виде ощущений восприятий и представлений компоненты чувственного отражения. Восприятие – 1 субъективный образ предмета явления или процесса непосредственно воздействующего на анализатор или систему анализаторов перцептивный образ или образ восприятия 2 процесс формирования образа предмета или...
27970. Восприятие как процесс категоризации в трудах Дж. Брунера 36.92 KB
  Личность и психика развитие личности и развитие психики: соотношение понятий. Личность и психика развитие личности и развитие психики: соотношение понятий. Понятие личности обозначает человеческого индивида как члена общества обобщает интегрированные в нем социально значимые черты. Петровский Ярошевский Развитие личности процесс качественных психологических личностных изменений в личности а также результат этих изменений.
27971. Память как высшая психическая функция 23.01 KB
  Психология этнической социализации и этнической идентичности. Психология этнической социализации и этнической идентичности. Этническая социализация выполняет функцию формирования множественной и многоуровневой идентичности личности способствующей конструктивному функционированию этничности в жизни индивида и общества: позитивной этнической идентичности и толерантного этнического взаимодействия. Одним из основных институтов этнической социализации является семья.
27972. Эффект Зейгарник. Этническая идентичность: общее описание, структура, становление и формирование, изменения этнической идентичности 18.62 KB
  Механизмы и эффекты межличностного восприятия Этническая идентичность: общее описание структура становление и формирование изменения этнической идентичности. Эффект Зейгарник. Эффект незавершенного действия эффект Зейгарник явление характеризующее влияние на процессы памяти перерывов в деятельности.