Lecture3_MP.ppt
- Количество слайдов: 45
Мови програмування Лекція 3
Загальні поняття та опис РНР Мова РНР спеціально призначена для роботи в Інтернеті. Її синтаксис нагадує мову С. У офіційній документації мова РНР подається як server-side HTML-embedded scripting language, тобто як скриптова мова з обробкою на сервері, що вбудовується в HTML. Відповідно: Обробка РНР-коду здійснюється на боці сервера ще до того, як веб-сторінка буде передана браузеру. РНР-код може бути безпосередньо вбудованим в HTML-код сторінки.
Історична довідка Початок 1995 р. – перша версія продукту (Personal Home Page Tools – засоби для персональної домашньої сторінки). Містила аналізатор коду для декількох спеціальних команд, набір утиліт для створення гостьової книги, лічильника та ін. Середина 1995 р. – поява PHP/FI (Personal Home Page / Forms Interpreter – персональна домашня сторінка / інтерпретатор форм). Містила можливість автоматично обробляти html-форми та вбудовуватися в html-коди. 1997 р. – PHP/FI 2. 0
Історична довідка 1998 р. – поява PHP 3. 0. З’явилася можливість розширення ядра, можливості взаємодії з базами даних, різними протоколами. Розробка нового, більш потужного та повного синтаксису з підтримкою об’єктно-орієнтованого програмування. PHP почали розшифровувати як Hypertext Preprocessor (РНР: препроцесор гіпертексту).
Сфери застосування РНР 1. Створення додатків (скриптів), які виконуються на стороні серверу. PHP найбільш широко використовується саме для створення такого роду скриптів. Для того, щоб працювати таким чином, знадобиться PHP-парсер (тобто обробник php-скриптів) і web-сервер для обробки скрипта, браузер для перегляду результатів роботи скрипта, ну, і, звичайно, який-небудь текстовий редактор для написання самого php-коду. Парсер PHP розповсюджується у вигляді CGI-програми або серверного модуля.
Сфери застосування РНР 2. Створення скриптів, що виконуються в командному рядку. Тобто за допомогою PHP можна створювати такі скрипти, які виконуватимуться, незалежно від web-серверу і браузера, на конкретній машині. Для такої роботи буде потрібно лише парсер PHP (в цьому випадку його називають інтерпретатором командного рядка (cli, command line interpreter)). Цей спосіб роботи підходить, наприклад, для скриптів, які повинні виконуватися регулярно за допомогою різних планувальників задач або для вирішення задач простої обробки тексту.
Сфери застосування РНР 3. Створення GUI-додатків (графічних інтерфейсів), що виконуються на стороні клієнта. Для застосування PHP в цій області буде потрібно спеціальний інструмент – PHP-GTK, який є розширенням PHP.
РНР У PHP поєднуються дві найпопулярніші парадигми програмування – об'єктна і процедурна. За допомогою PHP можна створювати зображення, PDF-файли, флэш -ролики; у нього включена підтримка сучасних баз даних, вбудовані функції для роботи з текстовими даними будь-яких форматів, включаючи XML, і функції для роботи з файловою системою. PHP підтримує взаємодію з різними сервісами за допомогою відповідних протоколів, таких як протокол управління доступом до директорій LDAP, протокол роботи з мережевим обладнанням SNMP, протоколи передачі повідомлень IMAP, NNTP і POP 3, протокол передачі гіпертексту HTTP і т. д. Звертаючи увагу на взаємодію між різними мовами, слід згадати про підтримку об'єктів Java і можливості їх використовування як об'єкти PHP.
PHP РНР являє собою щось середнє між компілятором та інтерпретатором. Процедура обробки сценарію у РНР На вхід РНР подається сценарій. Він переводить (транслює) його в спеціальний байт-код (внутрішнє представлення). Потім РНР виконує байт-код (а не код самої програми!), при цьому він не створює файл виконання. Байт-код більш компактний, у порівнянні зі звичайним кодом програми, тому його легше і швидше інтерпретувати (виконувати). Тобто, РНР є у більшій мірі інтерпретатором, аніж компілятором.
Переваги РНР, як інтерпретатора Не потрібно турбуватися про звільнення виділеної пам’яті, не потрібно закривати файл по завершенні роботи з ним – це все зробить інтерпретатор, оскільки він контролює виконання програми l Не потрібно думати про типи змінних, не потрібно оголошувати змінну до її першого використання l Налагодження програми та виявлення помилок суттєво спрощуються – інтерпретатор повідомляє при виявленні помилок l Можна написати програму, що буде писати іншу програму, а потім включить в себе код щойно написаної програми та виконає його. l
Перша програма (скрипт) на РНР php $my_name=Galya; echo “
Виконання РНР-скрипту Перед запуском програму потрібно правильно “встановити” на сервері. Для цього сценарій під іменем first. php потрібно скопіювати в каталог Document. Root сервера. На відміну від CGI програм, сценарії РНР є для сервера звичаними документами і їх не потрібно записувати у каталог cgi-bin. Записавши програму, в рядку браузера введіть http: //127. 0. 0. 1/first. php Якщо тепер, сторінку, що відображена у браузері переглянути у вигляді HTML-коду, то можна побачити наступне:
Програма РНР Код РНР береться у спеціальні теги рнр та ? >. Після тега початку сценарію ( рнр) іде перший оператор echo. Він здійснює виведення інформації. Його можна назвати найголовнішим оператором – без нього неможливо було б виводити інформацію у браузер і користувач не бачив би результату роботи сценарію. Рядок, що виводиться оператором echo, береться у лапки. Перший оператор виводить теги HTML, BODY та H 1. Другий оператор echo “Hello, $my_name”виводить слово Hello та значення змінної $my_name. Для того, щоб відрізняти змінні та звичайні рядки, перед іменем змінної ставить значок долара. Присвоювання змінній деякого значення здійснюється оператором “=“. Наприклад, $i=0; $d=7
Програма РНР Інший приклад: $word 1=“Hello”; $word 2=“World”; echo “$word 1, $word 2” echo “$word 1, word 2”; Перший оператор виведе у браузері рядок “Hello, World”, а другий – “Hello, word 2”. Слід зазначити, що у нашому прикладі (first. php) ми не оголосили змінну $my_name. Її оголосив автоматично сам РНР – оскільки це параметр, переданий сценарію браузером.
РНР Модифікуємо текст програми: php echo “
Коментарі в РНР 1 тип: # Це коментар 2 тип: // Це коментар 3 тип: /* Довгий, на багато рядків коментар */
Змінні та типи даних Змінна – це область оперативної пам’яті, доступ до якої здійснюється за іменем. Всі дані, з якими працює програма, зберігаються у вигляді змінних. У РНР перед змінною обов’язково ставити знак долара – так інтерпретатору легше виділяти змінні з маси тексту програми. Кількість оголошених змінних не обмежується.
Правила опису змінних l l Ім’я змінної має починатися зі знаку долара $ Ім’я змінної не повинне містити жодних інших символів, окрім символів латинського алфавіту, цифр та знаку підкреслювання Імена змінних у РНР чутливі до зміни регістру Оголошувати змінну можна у будь-якому місці, але до моменту, коли вона буде використовуватися вперше.
Типи даних Змінні у РНР можуть містити будь-яку інформацію. Виключення складають лише константи, що можуть містити тільки число чи рядок. Такого поняття як вказівник (змінна, що містить не конкретне значення, а вказує на область пам’яті, де знаходиться це значення), у РНР не існує. При присвоюванні змінна копіюється “один в один”, яку б структуру вона не мала. Нехай маємо дві змінні – масив та рядок. Якщо ми першій змінній присвоємо значення другої, то масив буде втрачено, а змінна, що містила масив буде містити рядок. Це означає, що копіюється не тільки значення змінної, але і структура.
Типи даних Тип змінної Опис Integer Ціле число. Даний тип відповідає типу longint у Паскалі Double(float) Дійсне число String Рядок. Дуже важливий тип даних, оскільки у більшості випадків сценарії займаються обробкою якихось рядків Array Масив Object Мова РНР підтримує принципи ООП. Програміст може створювати свої об’єкти та використовувати їх у програмі. Bool Логічний тип даних. Змінні можуть набувати значень true (істинно) чи false (хибно)
Типи даних При оголошенні змінних можна не вказувати їх тип. Вибір типу здійснюється самим інтерпретатором. Однак, РНР може помилятися, тому типи можна задавати явно, використовуючи дані, приведені у таблиці.
Функції Мова РНР надає багато засобів для визначення типу змінних: is_int($x) чи is_integer($x) – повертає true, якщо змінна, що передається, ціле число. is_double($x) чи is_float($x) - повертає true, якщо змінна – дійсне число. is_string($x) - повертає true, якщо змінна - рядок is_array - повертає true, якщо змінна – масив. is_object($x) - повертає true, якщо змінна – об’єкт is_bool($x) - повертає true, якщо змінна - логічна gettype($x) – повертає рядки, що відповідають типу змінної: integer, double, string, object, array, bool чи unknown type, якщо неможливо визначити тип. settype($x, $tyoe), де $type – один з рядків, що повертаються функцією gettype. Наприклад, settype($x, “double”) повертає значення false, якщо неможливо привести змінну $x до вказаного типу.
Логічні змінні У РНР істиною є будь-яке відмінне від нуля число, будь-який непустий рядок, значення true. Значення false, пустий рядок, нуль – це хибно. php echo false echo true; ? > Перший оператор виводиться пустий рядок, тобто нічого не виводить, а другий – виведе 1.
Логічні змінні Важлива особливість РНР: якщо в операторах порівняння (==, !=, <, >) один тип є логічним, то другий теж сприймається, як логічний. php $x=10; if ($x==1) echo “змінна дорівнює 1n”; if ($x==true) echo “змінна дорівнює truen” ; ? > 10<>1, тобто у результаті роботи виводиться лише другий рядок. Але. . .
Логічні змінні php $x=100; $y=true; echo “x=$xn”; echo “y=$yn”; if ($x==$y) echo “X=Y” ; ? > Спочатку програма повідомляє, що Х=100, Y=1, а потім, що X=Y.
Константи Для визначення констант використовується функція define, що має наступний формат: define($name, $value, $case_sen) $name – ім’я константи $value – значення константи $case_sen – необов’язковий параметр логічного типу, що вказує чи потрібно враховувати регістр літер (true) чи ні (false). define (“pi”, 3. 14, false) echo pi;
Константи При оголошенні констант слід враховувати два важливих моменти: lІм’я константи повинне братися у лапки, а не в апострофи l. Неможливо оголошувати дві константи з однаковим іменем Для перевірки існування константи використовується функція defined(), що повертає true, якщо константа оголошена та false – якщо ні. defined(“pi”, 3. 14, true); if ((defined(“pi”)==true) echo “Константа оголошена”;
Стандартні константи Ім’я __FILE__ __LINE__ PHP_OS PHP_VERSION Значення Зберігає ім’я програми, що виконується на даний момент Номер рядка, що обробляється інтерпретатором Ід’я та версія операційної системи під якою запущено РНР Версія РНР TRUE, true, False, Логічні константи false
Операції зі змінними Оператор присвоювання дозволяє надати змінній деяке значення. Змінній можна присвоїти будь-яке значення; значення, що повертається функцією, значення іншої змінної; значення виразу; посилання на іншу змінну. У РНР немає вказівників. Тому, якщо у змінну $x помістити файл розміром 500 Кб, а потім присвоїти їй значення $y, то буде створена точна копія змінної $x, що теж буде займати 500 Кб. Тому, в пам’яті буде майже один магабайт інформації.
Операції зі змінними Інтерпретатор сам виконує перетворення типів, але існують випадки, коли привести один тип змінних до іншого просто неможливо. (наприклад, перетворити рядок “ 1212 ю3 te” у число). При присвоюванні створюється точна копія змінної, тобто копіюється і тип змінної.
Оператор присвоювання Робота оператора присвоювання складається з двох послідовних дій: 1. Обрахунок виразу, що стоїть справа 2. Присвоєння змінній, що стоїть зліва, значення, отриманого у пункті 1. Відповідно, зліва та справа в операторі присвоювання може знаходитися одна і та ж змінна ($x=$x+4).
Видалення змінних здійснюється за допомогою команди unset(). Ця функція видаляє вказану в дужках змінну з пам’яті, і програма виконується далі. php $a= читаємо_великий_файл обробляємо_файл; unset($a); //звільняємо пам’ять ? >
Вирази та операції Вирази є цеглинками мови РНР. Виразом вважається все, що має значення (і навпаки). Найпростіший вираз – константа, що стоїть у правій частині оператора присвоювання. $x=100; $x – змінна, = - оператор присвоювання, 100 – вираз.
Вирази Виразом може слугувати й змінна, якщо їй поставлене у відповідність деяке значення. Наприклад, $x = 4; $y = $x; У першому операторі виразом є константа 4. У другому – змінна $x, оскільки вище їй було присвоєне значення 4. $y теж є виразом, оскільки має значення 4.
Арифметичні операції X+Y – додавання X-Y – віднімання X*Y - множення X/Y – ділення X%Y – остача від ділення X на Y Операція інкремента $x++ - збільшує значення на 1 Операція декремента $x-- - зменшує значення на 1
Бітові операції Дані операції призначені для установки чи зняття груп бітів цілочисельної змінної. Будь-яке число – це просто послідовність біт. Цілі числа в РНР – 32 -розрядні, тому для представлення одного числа використовується 32 біти. x & y – будуть встановлені ті біти, що встановлені в x і y одночасно x = 1111 (15) y = 1100 (12) результат = 1100 (12)
Бітові операції x | y – будуть встановлені тільки ті біти, що були встановлені або в x, або в y x = 0100 (4) y = 0101 (5) результат = 0101(5) ~x – інвертування бітів x = 1001 результат = 0110 x << y – порозрядний зсув бітів вліво на y розрядів x = 0010 y = 0001 (1 розряд) результат = 0100 x >> y – порозрядний зсув бітів x вправо на y розрядів x = 0010 y = 0001 (1 розряд) результат = 0001
Логічні вирази – це вирази, результатом яких може бути істина чи хиба. У логічних виразах можна використовувати операції порівняння чи логічні операції. Оператори порівняння: == - рівно != - не рівно < - менше > - більше >= - більше рівно <= - менше рівно
Логічні вирази У РНР не можна порівнювати масиви та об’єкти. Дозволяється порівнювати тільки скалярні змінні. $x = true / $x – істина $x = $y < 0 / $x = true, if $y < 0 $x = $y ==0 / $x = true, if $y = 0
Логічні операції !x повертає true, якщо х – хибно, і навпаки (заперечення – NOT) x && y повертає true, якщо x і y – істинні (логічна операція І – AND) x || y повертає true, якщо істинно хоча б одне зі значень чи всі вони істинні (логічна операція ЧИ – OR)
Рядки $s = “Hello”; echo “$s”; echo ‘$s’ Якщо рядок взято між апострофи, то всі символи трактуються як є. Виключенням є послідовності і \. Перша являє собою звичайний апостроф, а друга – зворотну похилу. Рядки в лапках дозволяють вивести значення змінної. Рядки в лапках можуть містити наступні спеціальні символи: n – символ нового рядка r – символ повернення каретки t – символ табуляції $ - знак долара ” – лапки NN – символ з кодом NN у шістнадцятеричній системі.
Операції з рядками s 1. s 2 – конкатенація (злиття) двох рядків s 1[n] - звернення до символу у рядку Here-документи – спосіб запису багаторядкових констант. Довжина рядка в РНР обмежена тільки об’ємом вільної оперативної пам’яті. $s = <<
Жорсткі посилання Жорстке посилання – це просто псевдонім імені другої змінної. Для неї використовується оператор &. php $x= 77; $link = &$x; $link = 66; echo $link; ? >
Символічні посилання Символічне посилання – це звичайна змінна, що містить ім’я іншої змінної. Для доступу до значення посилання використовується подвійний знак долара $$. php $x=77; $link = “x”; // символічне посилання на змінну х echo $$link; // виводить 77 echo $link; // виводить х $$link = 66; // аналогічно $x=66 echo $x; // виведе 66 ? >
http: //rutherford. akit. cnu/~lgv/назва програми. php