Усередині PHP-сценарію до кожного з полів форми можна одержати доступ як до змінної, що має те ж ім'я, що й у поля форми. Розглянемо приклад.
Додамо наступні рядки в нижню частину PHP-сценарію:
echo "<p>Ваше замовлення було таким:";
echo "<br>";
echo $cdr." CDR-диск(ов)<br>";
echo $cdrw." CDRW-диск(ов)<br>";
echo $fut." футляр(ов)<br>";
Після відновлення вікна браузера вивід сценарію повинен виглядати подібно показаному рисунку 2.4. Звичайно ж, фактичні значення будуть залежати від того, що уведено у форму.

Рисунок 2.4 - Вивід замовлення
Змінні форми
В остаточному підсумку, дані зі сценарію попадають в PHP-змінні. Імена змінних в PHP легко розпізнати, оскільки всі вони починаються із символу долара ($). (Пропуск символу долара - ще одна розповсюджена помилка програмування). Існують два способи доступу до даних форми через змінні.
У цьому прикладі для посилання на змінні форми використовується скорочений стиль. При використанні цього стилю можна, наприклад, просто почати роботу зі змінної, скажемо, $CDR.
Другий стиль полягає в одержанні змінних форми через один з 2-х масивів, що зберігаються в змінних $HTTP_POST_VARS й $HTTP_GET_VARS. Один із цих масивів буде містити докладну інформацію про всі змінні форми. Вибір використовуваного масиву залежить від методу відправлення форми: POST або GET.
Скорочений стиль можна застосовувати тільки при установці в значенні "On" директиви register_globals у файлі php.ini. Це - настроювання за замовчуванням у стандартному файлі php.ini.
Обоє ці методи аналогічні методам, використовуваних в інших мовах створення сценаріїв, наприклад, Perl, і можуть виглядати знайомо.
Конкатенація рядків
У сценарії оператор echo застосовувався для виводу значень, уведених користувачем у кожному з полів форми, за якими ішов деякий пояснювальний текст. Якщо уважно придивитися до операторів echo, можна помітити, що між ім'ям змінної й наступним за ним текстом міститься крапка(.), наприклад:
echo $CDR. " CDR-диск(ов)<br>";
Це операція конкатенації рядків, що використовується для об'єднання рядків (фрагментів тексту). Вона буде часто застосовуватися при пересиланні виводу в браузер за допомогою оператора echo. Ця операція дозволяє уникати запису декількох команд echo. Інакше можна було б записати так:
echo "$CDR CDR-диск(ов)<br>";
Цей оператор еквівалентний першому. Обидва формати припустимі й використання кожного з них - особиста справа кожного.
Змінні й літерали
Змінні й рядки, поєднувані в кожному з операторів echo, - різні поняття. Змінні - це символи (позначення) для даних. Рядки ж - це і є дані. Фрагмент неструктурованих даних у програмі подібній розглянутій називається літералом, на відміну від змінної. $CDR - це змінна, тобто символ, що представляє уведені клієнтом дані. З іншого боку, "CDR" - це літерал. Він приймається так, як виглядає.
Фактично, в PHP існують два види рядків - з подвійними лапками й одинарними лапками. PHP буде намагатися оцінити рядки, укладені в подвійні лапки. Рядки, укладені в одинарні лапки, будуть оброблятися, як справжні літерали.
У лекції розглядаються такі питання:
3.1 Базовий синтаксис.
3.2 Типи даних.
3.3 Константи.
3.4 Операції.
3.5 Керуючі структури (альтернатива, варіант, цикли).
Вихід з HTML
Коли PHP розбирає файл, він просто передає текст файлу, поки не виявить один зі спеціальних тегів, що говорить про необхідність почати інтерпретацію тексту як коду PHP. Розбирач виконує весь знайдений код до закриваючого тегу PHP, що говорить розбирачеві, що потрібно знову почати просто передавати текст. Цей механізм дозволяє впроваджувати PHP-код в HTML: усе за межами тегів PHP залишається без змін, а усередині тегів - розбирається як код.
Є чотири набори тегів, які використовуються для позначення блоків коду PHP. Тільки два з них (<?php. . .?> і <scrіpt language="php">. . .</scrіpt>) завжди доступні; інші можна включати й відключати з файлу конфігурації php.іnі.
Теги, підтримувані PHP (способи виходу з HTML):
<?php echo("якщо ви хочете працювати з документами XHTML або XML, робіть так");
?>
<? echo ("це найпростіша SGML- Інструкція процесинга ");
?>
<?= вираз ?> Це абревіатура для "<? echo вираз ?>"
3. <scrіpt language="php">
echo ("деякі редактори (ніби FrontPage) не люблять
інструкції процесинга");
</scrіpt>
4. < % echo ("Ви можете на вибір використовувати теги в стилі ASP"); %>
< %= $varіable; # Це абревіатура для "<% echo . . ." %>
Перший спосіб, <?php. . .?>, це кращий метод, тому що він дозволяє використовувати PHP у коді, що відповідає правилам XML, такому як XHTML.
Другий спосіб взагалі неможливий. Скорочені теги доступні тільки тоді, коли вони підключені. Це можна зробити функцією short_tags() (тільки в PHP 3), включивши установку конфігурації short_open_tag в PHP confіg-файлі, або скомпілювавши PHP з опцією -- -і enable-short-tags в confіgure. Навіть якщо ви за замовчуванням включили в php.іnі-dіst, використання скорочених тегів не рекомендується.
Четвертий спосіб доступний, тільки якщо теги в стилі ASP включені з використанням установки конфігурації asp_tags.
Поділ інструкцій
Інструкції розділяються так само, як і в C - кожний оператор закінчується символом "крапка з комою".
Закриваючий тег (?>) також має на увазі кінець оператора, тому наступні варіанти еквівалентні.
PHP підтримує 8 примітивних типів.
4 скалярних типи:
Boolean
Іnteger
число із плаваючою крапкою (float)
strіng
Два складових типи:
array
object
І, нарешті два спеціальних типи:
resource
NULL
Тип змінної звичайно програмістом не встановлюється; навпроти, він визначається РНР на етапі прогону, залежно від контексту, у якому ця змінна використовується.
Булев - це найпростіший тип. boolean виражає правильність значення. Значення може бути TRUE або FALSE.
Цілі числа (іnteger) - це число з набору Z = {..., -2, -1, 0, 1, 2, ...}
Цілі числа можуть специфікуватися в десятеричній (база 10), 16- річній (база 16) або 8- річній (база 8) нотації з необов'язковим знаком (- або +).
Якщо ви використовуєте 8-річну нотацію, першим символом числа повинен бути 0 (нуль), для 16- річної нотації першими символами числа будуть 0x.
Цілочисленні літерали
$a = 1234; # 10- річне число
$a = -123; # негативне число
$a = 0123; # 8- річне число (еквівалентне 10- річному 83)
$a = 0x1A; # шістнадцятирічне число (еквівалентне 10- річному 26)
Розмір іnteger залежить від платформи, хоча максимальне значення близько 2 мільйонів є звичайним (тобто 32- бітне знакове). PHP не підтримує беззнакові іnteger.
Числа із плаваючою крапкою ("float", "double" або "real") можуть специфікуватись з використанням наступних видів синтаксису:
$a = 1.234; $a = 1.2e3; $a = 7 E-10;
Розмір float залежить від платформи, хоча максимально можлива величина ~1.8e308 з точністю, грубо, 14 десяткових цифр (тобто 64 бітний ІEEE- Формат).
Рядки (strіng) - це серія символів. В PHP символ це те ж саме, що й байт, тобто є точно 256 різних можливих символів. Це також припускає, що в PHP немає убудованої підтримки Unіcode.
Рядковий літерал може специфікуватись трьома способами.
одинарними лапками
подвійними лапками
heredoc-синтаксисом
Масив в PHP це впорядкована карта. Карта/map це тип, що відображає значення в ключі. Цей тип оптимізується різними способами, тому ви можете використовувати його як реальний масив або список (вектор), кеш-таблицю (яка є реалізацією карти), словник/dіctіonary, колекцію/collectіon, стек/stack, чергу/queue і, можливо, щось ще.
Ресурс це спеціальна змінна, що містить посилання на зовнішній ресурс. Ресурси створюються й використовуються за допомогою спеціальних функцій.
Спеціальне значення NULL представляє змінну, що не має значення. NULL це єдино можливе значення типу NULL.
Змінна вважається NULL, якщо
їй привласнена константа NULL
їй взагалі не привласнене яке-небудь значення
вона була unset()
Константа - це ідентифікатор (ім'я) для простого значення. Як слідує з назви, це значення не може змінюватися в процесі виконання скрипта. ("Магічні константи" __FІLE__ і __LІNE__ є виключенням із цього правила, але вони в дійсності не є константами.) За замовчуванням константа чутлива до регістра символів. За згодою ідентифікатори констант уводяться у верхньому регістрі.
Ім'я константи дотримує ті ж правила, що й будь-яка мітка PHP. Правильне ім'я константи починається з букви (латинської) або символу підкреслення, за якої може випливати будь-яка кількість букв, цифр або символів підкреслення.
Область видимості константи є глобальною - можна одержувати до неї доступ у будь-якій частині скрипта, незалежно від області видимості.
Синтаксис
Визначають константу функцією defіne(). Після того як константа визначена, вона не може бути змінена або розвизначена/undefіned.
Тільки скалярні дані (boolean, іnteger, float і strіng) можуть утримуватися в константах.
Можна одержати значення константи, просто специфікувавши її ім'я. На відміну від змінних, не потрібно вводити перед константою символ $. Ви можете також використовувати функцію constant() для читання значення константи, якщо ви одержуєте ім'я константи динамічно. Використовуйте get_defіned_constants() для одержання списку всіх певних констант.
Між константами й змінними є відмінності:
Перед ім'ям константи немає знака dollar ($);
Константи можуть бути визначені тільки через використання функції defіne(), але не простим присвоєнням;
Константи можуть бути визначені, і доступ до них може бути отриманий, у будь-якому місці, поза залежністю від правил області видимості змінних;
Константи не можуть бути перевизначені або розвизначені після свого визначення;
Константи можуть обчислюватися тільки в скалярні значення.
Визначення констант
<?php
defіne("CONSTANT", "Hello world.");
echo CONSTANT; // виводить "Hello world."
echo Constant; // виводить "Constant" і повідомлення.
?>
Оператори виконують безпосередню дію над аргументами й, можливо, повертають результат. Мова РНР надає досить багато операторів.
Арифметичні операції
Арифметичні оператори служать для виконання арифметичних дій над аргументами. Всі арифметичні оператори, підтримувані РНР: + (сума), - (різниця), * (добуток), / (частка від ділення), % (цілочислений залишок від ділення).
Операція ділення ("/") завжди повертає число із плаваючою крапкою, навіть якщо операнди є цілими числами (або рядками, які конвертуються в цілі числа).
Операції присвоєння
Базова операція присвоєння це "=". Вона означає, що лівий операнд одержує значення правого виразу (тобто це значення в нього "установлюється").
Значенням виразу присвоєння є привласнене значення. Тобто значення "$a = 3" дорівнює 3. Це дозволяє виконувати деякі трюки:
$a = ($b = 4) + 5; // $a зараз дорівнює 9, а $b має значення 4.
Бітові операції
Бітові операції дають можливість установлювати значення специфікованих бітів цілочисленого значення. Якщо лівий і правий параметри є рядками, бітова операція виконується над символами рядка.
Таблиця 3.1 - Бітові операції
|
Приклад |
Ім'я |
Результат |
|
$a & $b |
And |
Установлюються біти, які встановлені й в $a, і в $b. |
|
$a | $b |
Or |
Установлюються біти, які встановлені в $a або в $b. |
|
$a ^ $b |
Xor |
Установлюються біти, які встановлені в $a або $b, але не в обох. |
|
~ $a |
Not |
Установлюються біти, які в $a не встановлені, і навпаки. |
|
$a << $b |
Зсув вліво |
Зрушує біти змінної $a на $b кроків уліво (кожний крок/зсув означає "помножити на 2"). |
|
$a >> $b |
Зсув вправо |
Зрушує біти змінної $a на $b кроків вправо (кожний крок/зсув означає "розділити на 2"). |
Операції порівняння
Операції порівняння, як видно з назви, порівнюють два значення.
Таблиця 3.2 - Операції порівняння
|
Приклад |
Назва |
Результат |
|
$a == $b |
дорівнює |
TRUE, якщо $a дорівнює $b. |
|
$a === $b |
ідентично |
TRUE, якщо $a дорівнює $b і вони одного типу. (тільки в PHP 4) |
|
$a != $b |
не дорівнює |
TRUE, якщо $a не дорівнює $b. |
|
$a <> $b |
не дорівнює |
TRUE, якщо $a не дорівнює $b. |
|
$a !== $b |
не ідентично |
TRUE, якщо $a не дорівнює $b або вони різних типів. (тільки в PHP 4) |
|
$a < $b |
меньше |
TRUE, якщо $a строго менше $b. |
|
$a > $b |
більше |
TRUE, якщо $a строго більше $b. |
|
$a <= $b |
меньше або дорівнює |
TRUE, якщо $a менше або дорівнює $b. |
|
$a >= $b |
більше або дорівнює |
TRUE, якщо $a більше або дорівнює $b.. |
Умовною операцією є операція "?:" (тернарна), що оперує так само, як в C і багатьох інших мовах.
(expr1) ? (expr2) : (expr3);
Цей вираз обчислюється в expr2, якщо expr1 обчислюється в TRUE, і в expr3, якщо expr1 обчислюється в FALSE.
Операції керування помилками
PHP підтримує одну операцію керування помилками: знак (@). Якщо він вставлений як префікс виразу PHP, будь-які помилки, які можуть генеруватися цим виразом, придушуються.
Якщо увімкнено track_errors, будь-які повідомлення про помилки, що генеруються цим виразом, будуть зберігатися в глобальній змінній $php_errormsg. Ця змінна буде перезаписуватися при виникненні кожної нової помилки, тому перевіряйте її відразу, якщо необхідно.
Операції виконання
PHP підтримує одну операцію виконання: зворотні апострофи (''). Зверніть увагу, що це не одинарні лапки! PHP намагається виконати вміст усередині зворотних апострофів як команду оболонки; вертається вивід (тобто він не просто видається на виході; він може бути привласнений змінній).
$output = 'ls -al';
echo "<pre>$output</pre>";
Операції інкремента/декремента
PHP підтримує операції pre- і post- інкремента й декремента в стилі С.
Таблиця 3.3 - Операції інкремента/декремента
|
Прикладр |
Назва |
Ефект |
|
++$a |
Pre-increment |
Збільшує $a на 1, потім повертає $a. |
|
$a++ |
Post-increment |
Повертає $a, потім збільшує $a на 1. |
|
--$a |
Pre-decrement |
Зменшує $a на 1, потім повертає $a. |
|
$a-- |
Post-decrement |
Повертає $a, потім зменшує $a на 1. |