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


 

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

20041. Опоры вращения с трением качения. Опоры с малым моментом трения 1.29 MB
  Опоры с малым моментом трения. Опоры на ножах Опора состоит из ножа 1 контактирующего с подшипником – подушкой 2. В любом варианте опоры этого типа представляют собой контакт двух цилиндрических поверхностей максимальный угол поворота 10 момент трения минимальный. Опоры на кернах Опора на керне состоит из цапфы конической формы на конце которой выполнена сферическая полированная поверхность радиусом 01 – 015 мм и подшипника с вогнутой сферической поверхностью с радиусом =4 – 12 .
20042. Направляющие прямолинейного движения с трением скольжения 1.8 MB
  Для обеспечения поступательного движения одной детали относительно другой применяют направляющие. Требования к направляющим: надёжность технологичность невысокая стоимость Направляющие с трением скольжения просты в изготовлении имеют небольшие габаритные размеры но чувствительны к изменению температуры и уступают направляющим с трением качения в плавности и лёгкости хода. По конструктивному признаку различают: цилиндрические призматические направляющие. Цилиндрические направляющие наиболее просты в изготовлении но в них трудно...
20043. Направляющие прямолинейного движения с трением качения 1.21 MB
  По форме используемых тел качения различают направляющие на шариках и на роликах. При этом в качестве роликов могут быть использованы стандартные подшипники качения. В зависимости от способа установки различают направляющие с перекатывающимися и вращающимися вокруг своей оси телами качения.
20044. Конструирование механически обрабатываемых деталей 85.5 KB
  Рекомендуется уменьшать количество металла, снимаемого при обработке (в первую очередь это касается отливок); По возможности рекомендуется отказываться от обработки деталей со снятием стружки, переходить на штамповку, вытяжку, гибку;
20045. ОТДЕЛОЧНЫЕ ОПЕРАЦИИ ОБРАБОТКИ ВАЛОВ. СУПЕРФИНИШИРОВАНИЕ. ПРИТИРКА. ПОЛИРОВАНИЕ. НАКАТЫВАНИЕ РИФЛЕНИЙ 481 KB
  Отделочная обработка группа заключительных финишных операций обработки металлов в результате которых достигается высокая точность размеров и формы деталей и улучшается качество поверхности. Также находят применение такие методы как вальцевание калибровка обкатка и раскатка роликами и шариками дробеструйная обработка в результате которых уменьшается шероховатость поверхности и происходит её упрочнение изза поверхностной пластической деформации. Абразивные бруски пружинами прижимаются к поверхности детали с определенным удельным...
20046. Изготовление втулок. Классификация и заготовки. Последовательность выполнения операций при изготовлении точных втулок. Изготовление втулок на токарно-револьверных станках 27 KB
  Механическую обработку точных втулок осуществляют следующим образом: 1 предварительная токарная обработка вспомогательных и посадочных поверхностей 2 Окончательная токарная обработка посадочных цилиндрических поверхностей 3 обработка вспомогательных поверхностей пазов лысок фасонных поверхностей 4 Отделочная обработка посадочных поверхностей 5 нанесение покрытий. Зенкерование – обработка отверстий под последующее растачивание или развертывание. Возможна обработка сквозных и глухих отверстий с припускомдо 6мм на d. Обработка...
20047. Основные этапы обработки корпусных деталей. Обработка основных отверстий корпусных деталей. Обработка крепежных отверстий 27 KB
  Обработка основных отверстий корпусных деталей. Обработка крепежных отверстий. Для корпусных деталей характерно наличие точных и протяженных плоскостей и точных отверстий. Технологический процесс изготовления состоит из след этапов: 1 получение заготовки 2 термическая обработка 3 механическая обработка 4 изготовление основных отверстий 5 изготовление крепежных отверстий 6 изготовление уступов канавок углублений 7 снятие заусенцев и покрытие.
20048. Нарезание зубчатых колес методом копирования 48.5 KB
  Метод копирования заключается в том что профиль зуба инструмента соответствует профилю впадины колеса. Колеса нарезают на универсальнофрезерных станках. Сущность: Долбятся одновременно все впадины колеса.
20049. НАРЕЗАНИЕ ЗУБЧАТОГО КОЛЕСА МЕТОДОМ ОБКАТКИ ТЕХНОЛОГИЯ ПРИБОРОСТРОЕНИЯ 46.5 KB
  колес червячного колеса и колеса зубч. колеса и рейки с наложением некоторых доп. возможность одним инстром обрабатывать колеса с разным числом зубьев колеса с одним модулем.