Лекція «Вступ до рнр. Основний синтаксис рнр»
-
Короткий огляд можливостей РНР. Вбудовування РНР в HTML
-
Основний синтаксис РНР
-
Змінні в РНР
-
Константи в РНР
-
Оператори в РНР
-
Типи даних в РНР
Короткий огляд специфіки і можливостей РНР. Вбудовування РНР в HTML.
Сьогодні PHP використовується сотнями тисяч розроблювачів. Кілька мільйонів сайтів написані на PHP, що складає більш 20% доменів Internet.
«PHP може все», – заявляють його розробники. У першу чергу PHP використовується для створення скриптів, що працюють на стороні сервера, для цього його, власне, і придумали. PHP здатний розв’язувати ті ж задачі, що і будь-які інші CGI-скрипти, у тому числі обробляти дані html-форм, динамічно генерувати html сторінки і т.п. Але є й інші області, де може використовуватися PHP. Всього виділяють три основні області застосування PHP.
-
Перша область – це створення додатків (скриптів), що виконуються на стороні сервера.
-
Друга область – це створення скриптів, що виконуються в командному рядку. Тобто за допомогою PHP можна створювати такі скрипти, що будуть виконуватися, незалежно від web-сервера і браузера, на конкретній машині. Цей спосіб роботи підходить, наприклад, для скриптів, що повинні виконуватися регулярно за допомогою різних планувальників задач або для розв’язання задач простої обробки тексту.
-
Третя область – це створення GUI-додатків (графічних інтерфейсів), що виконуються на стороні клієнта.
В принципі це не найкращий спосіб використовувати PHP, особливо для початківців, але якщо ви вже досконально вивчили PHP, то такі можливості мови можуть виявитися досить корисними. Для застосування PHP у цій області буде потрібно спеціальний інструмент – PHP-GTK, що є розширенням PHP.
У PHP поєднуються дві найпопулярніші парадигми програмування – об'єктна і процедурна. У PHP4 більш повно підтримується процедурне програмування, але існує можливість писати програми й в об'єктному стилі. Вже в перших пробних версіях PHP5 більшість недоліків у реалізації об’єктно-орієнтованої моделі мови, що існують у PHP4, усунуті.
Якщо говорити про можливості сьогоднішнього PHP, то вони виходять далеко за рамки тих, що були реалізовані в його перших версіях. За допомогою PHP можна створювати зображення, PDF-файли, флеш-ролики, у нього включена підтримка великої кількості сучасних баз даних, вбудовані функції для роботи з текстовими даними будь-яких форматів, включаючи XML, і функції для роботи з файловою системою. PHP підтримує взаємодію з різними сервісами за допомогою відповідних протоколів, таких як протокол керування доступом до директорій LDAP, протокол роботи з мережним устаткуванням SNMP, протоколи передачі повідомлень IMAP, NNTP і POP3, протокол передачі гіпертексту HTTP і т.д.
Звертаючи увагу на взаємодію між різними мовами, варто згадати про підтримку об'єктів Java і можливості їхнього використання як об'єктів PHP. Для доступу до вилучених об'єктів можна використовувати розширення CORBA.
Для роботи з текстовою інформацією PHP успадкував (з невеликими змінами) механізми роботи з регулярними виразами з мови Perl і UNIX-систем. Для обробки XML-документів можна використовувати як стандарти DOM і SAX, так і API для XSLT-трансформацій.
Для створення додатків електронної комерції існує ряд корисних функцій, таких як функції здійснення платежів Cybercash, CyberMUT, VeriSign Payflow Pro і CCVS.
Зараз більш докладно розповімо про те, що являє собою PHP-програма і чим вона відрізняється від програм на мовах C, Perl і JavaScript. Розглянемо приклад
<html>
<head>
<title>Приклад</title>
</head>
<body>
<?php
echo "<p>Привіт, я – скрипт PHP!</p>";
?>
</body>
</html>
Приклад. Простий html-файл з вбудованим кодом на РНР
Це простий HTML-файл, у який вбудований за допомогою спеціальних тегів код, написаний мовою PHP.
Як ми вже відзначали вище, PHP схожа на C і Perl. Однак наведена тут програма сильно відрізняється від аналогічних за змістом програм на мовах C і Perl. Тут не потрібно писати велику кількість спеціальних команд для виведення HTML. Пишеться безпосередньо HTML-скрипт, у який можна вбудовувати PHP-код, що здійснює які-небудь дії (наприклад, що виводить текст на екран, як у нашому прикладі). Недоліком PHP у порівнянні із C і Perl, незважаючи на всі зусилля розроблювачів, усе ще є недостатня швидкість виконання складних скриптів.
PHP-скрипти – це програми, що виконуються й обробляються сервером. Так що порівнювати його зі скриптовими мовами типу JavaScript не можна, тому що написані на них скрипти виконуються на машині клієнта. У чому відмінність скриптів, виконуваних на сервері і на клієнті? Якщо скрипт обробляється сервером, клієнтові посилаються тільки результати роботи скрипта. Наприклад, якщо на сервері виконувався скрипт, подібний наведеному вище, клієнт одержить згенеровану HTML-сторінку вигляду:
<html>
<head>
<title>Приклад</title>
</head>
<body>
<p>Привіт, я – скрипт PHP!</p>
</body>
</html>
У цьому випадку клієнт не знає, який код виконується. Можна навіть сконфігурувати свій сервер таким чином, щоб HTML-файли оброблялися процесором PHP, так що клієнти навіть не зможуть довідатися, чи одержують вони звичайний HTML-файл або результат виконання скрипта. Якщо ж скрипт обробляється клієнтом (наприклад, це програма мовою JavaScript), то клієнт одержує сторінку, що містить код скрипта.
Як видно з наведеного прикладу PHP-скрипти вбудовуються в HTML-код. Виникає питання, яким чином? Є кілька способів. Один з них наведений у найпершому прикладі – за допомогою відкриваючого тега <?php і закриваючого тега ?>. Такого вигляду спеціальні теги дозволяють переключатися між режимами HTML і PHP. Цей синтаксис найбільш кращий, оскільки дозволяє задіяти PHP у XML-сумісних програмах (наприклад, написаних мовою XHTML), але проте можна використовувати наступні альтернативні варіанти (команда echo "Some text"; виводить на екран текст «Some text».):
-
<? echo "Це найпростішаінструкція для обробки PHP"; ?>
-
<script language="php"> echo "Деякі редактори(FrontPage) надають перевагу цьому способу"; </script>
-
< % echo "Можна використовувати теги у стилі ASP "; %>
Перший з цих способів не завжди доступний. Щоб ним користуватися, потрібно включити короткі теги або за допомогою функції short_tags() для PHP 3, або включивши налаштування short_open_tag у конфігураційному файлі PHP, або скомпілювавши PHP з параметром --enable-short-tags. Навіть якщо це включено за замовчуванням у php.ini-dist, використання коротких тегів не рекомендується.
Другий спосіб аналогічний налаштуванню, наприклад, JavaScript-коду і використовує для цього відповідний html тег. Тому використовувати його можна завжди, але це робиться рідко через його громіздкість.
Третій спосіб можна застосувати, тільки якщо теги в стилі ASP були включені, використовуючи конфігураційне налаштування asp_tags.
Коли PHP обробляє файл, він просто передає його текст, поки не зустріне один з перерахованих спеціальних тегів, що повідомляє йому про необхідність почати інтерпретацію тексту як коду PHP. Потім він виконує весь знайдений код до закриваючого тега, що говорить інтерпретаторові, що далі знову йде просто текст. Цей механізм дозволяє впроваджувати PHP-код у HTML – усе за межами тегів PHP залишається незмінним, тоді як у середині інтерпретується як код.
Основний синтаксис РНР Перше, що потрібно знати щодо синтаксису PHP, – це те, як він вбудовується в HTML-код, як інтерпретатор довідається, що це код мовою PHP. Вище вже говорилося про це. Повторюватися не будемо, відзначимо лише, що в прикладах ми найчастіше будемо використовувати варіант <?php ?>, і іноді скорочений варіант <? ?>.
Програма на PHP (та й на будь-якій іншій мові програмування) – це набір команд (операторів). Оброблювачеві програми необхідно якось відрізняти одну команду від іншої. Для цього використовуються спеціальні символи – роздільники. У PHP оператори розділяються так само, як і в C Perl або Pascal, – кожен вираз закінчується крапкою з комою.
Закриваючий тег «?>» розуміється як кінець інструкції, тому перед ним крапку з комою не ставлять. Наприклад, два наступні фрагменти коду еквівалентні:
<?php
echo "Hello, world!"; // крапка з комою
// наприкінці команди
// обов'язкова
?>
<?php
echo "Hello, world!"
?>
Часто при написанні програм виникає необхідність робити які-небудь коментарі до коду, що ніяк не впливають на сам код, а тільки пояснюють його. Це важливо при створенні великих програм і у випадку, якщо кілька людей працюють над одною програмою. При наявності коментарів у програмі в її коді розібратися набагато простіше. В усіх мовах програмування передбачена можливість включати коментарі в код програми. PHP підтримує кілька видів коментарів: у стилі C, C++ і оболонки Unix. Символи // і # позначають початок однорядкових коментарів, /* і */ – відповідно початок і кінець багатострічкових коментарів.
<?php
echo "Мене звуть Андрій";
// Це однорядковий коментар
// у стилі С++
echo "Прізвище моє Вельгач";
/* Це багатострічковий коментар.
Тут можна написати кілька рядків.
При виконанні програми усе, що
знаходиться тут (закоментовано),
буде ігноровано. */
echo"Я вивчаю PHP";
# Це коментар у стилі
# оболонки Unix
?>
Важливим елементом кожної мови є змінні, константи й оператори. Розглянемо, як виділяються й обробляються ці елементи в PHP.
Змінні в РНР.
Змінна в PHP позначається знаком долара, за яким слідує її ім'я. Наприклад:
$my_var
Ім'я змінної чуттєве до регістра, тобто змінні $my_var і $My_var різні.
Імена змінних формуються по таким же правилам, що й інші імена в PHP: правильне ім'я змінної повинно починатися з букви або символу підкреслення з наступною послідовністю в будь-якій кількості буквами, цифрами або символами підкреслення.
У PHP змінні завжди присвоюються за значенням. Тобто коли ви присвоюєте вираз змінній, усі значення оригінального виразу копіюється в цю змінну. Це означає, наприклад, що після присвоєння одної змінної значення іншої змінної зміна однієї з них не впливає на значення іншої.
<?php
$first = ' Text '; // Присвоюємо $first значення ' Text '
$second = $first; // Присвоюємо $second значення змінної $first
$first = ' New text '; // Змінюємо значення $first на ' New text '
echo "Змінна з ім'ям first "."дорівнює $first <br>";
// виводимо значення $first
echo "Змінна з ім'ям second ". "дорівнює $second";
// виводимо значення $second
?>
Результат роботи цього скрипта буде наступним:
Змінна з ім'ям first дорівнює New text
Змінна з ім'ям second дорівнює Text
PHP 4, крім цього, пропонує ще один спосіб присвоєння значень змінним: присвоєння по посиланню. Для того, щоб присвоїти значення змінної по посиланню, це значення повинне мати ім'я, тобто воно повинно бути представлено якою-небудь змінною. Щоб вказати, що значення однієї змінної присвоюється іншій змінній по посиланню, потрібно перед ім'ям першої змінної поставити знак амперсанд &. Розглянемо той же приклад, що і вище, тільки будемо присвоювати значення змінної first змінній second по посиланню:
<?php
$first = ' Text '; // Привласнюємо $first значення ' Text '
$second = &$first;
/* Робимо посилання на $first через $second.
Тепер значення цих змінних будуть завжди збігатися */
// Змінимо значення $first на ' New text '
$first = ' New text ';
echo "Змінна з ім'ям first "."дорівнює $first <br>";
// виведемо значення обох змінних
echo "Змінна з ім'ям second "."дорівнює $second";
?>
Цей скрипт виведе наступне:
Змінна з ім'ям first дорівнює New text.
Змінна з ім'ям second дорівнює New text.
Тобто разом з змінною $first змінилася і змінна $second.
Константи.
Для збереження сталих величин, тобто таких величин, значення яких не змінюється в ході виконання скрипта, використовуються константи. Такими величинами можуть бути математичні константи, паролі, шляхи до файлів і т.п. Основна відмінність константи від змінної полягає в тому, що їй не можна присвоїти значення більше одного разу і її значення не можна анулювати після її визначення. Крім того, у константи немає приставки у вигляді знака долара і її не можна задати простим присвоюванням значення. Як же тоді можна визначити константу? Для цього існує спеціальна функція define(). Її синтаксис такий:
define("Ім'я_константи","Значення_константи",[Нечутливість_до_регістра])
За замовчуванням імена констант чуттєві до регістра. Для кожної константи це можна змінити, вказавши як значення аргументу Нечутливість_до_регістра значення True. Існує домовленність, по якій імена констант завжди пишуться у верхньому регістрі.
Одержати значення константи можна, вказавши її ім'я. На відміну від змінних, не потрібно ставити перед ім'ям константи символ $. Крім того, для одержання значення константи можна використовувати функцію constant() з ім'ям константи як параметр.
<?php
// визначаємо константу PASSWORD
define("PASSWORD","qwerty");
// визначаємо регістронезалежну константу PI зі значенням 3.14
define("PI","3.14", True);
// виводимо значення константи PASSWORD, тобто qwerty
echo (PASSWORD);
// теж виведе qwerty
echo constant("PASSWORD");
echo (password);
/* виведе password і попередження,
оскільки ми ввели регістрозалежну
константу PASSWORD */
// виводимо 3.14, оскільки константа PI регістронезалежна по визначенню
echo pi;
?>
Крім змінних, що задаються користувачем, про які ми тільки що розповіли, у PHP існує ряд констант, обумовлених самим інтерпретатором. Наприклад, константа __FILE__ зберігає ім'я файлу програми (і шлях до нього), що виконується в даний момент, __FUNCTION__ містить ім'я функції, __CLASS__ – ім'я класу, PHP_VERSION – версія інтерпретатора PHP. Повний список визначених констант можна одержати, прочитавши посібник з PHP.
Оператори в РНР. Оператори дозволяють виконувати різні дії із змінними, константами і виразами. Ми ще не згадували про те, що таке вираз. Вираз можна визначити як все, що завгодно, що має значення. Змінні і константи – це основні і найбільш прості форми виразів. Існує безліч операцій (і відповідних їм операторів), з допомогою яким можна створювати вирази. Розглянемо деякі з них докладніше.
Таблиця 2.1. Арифметичні оператори | ||
Позначення | Назва | Приклад |
+ | Додавання | $a + $b |
- | Віднімання | $a - $b |
* | Множення | $a * $b |
/ | Ділення | $a / $b |
% | Остача від ділення | $a % $b |
Таблиця 2.2. Стрічкові оператори | ||
Позначення | Назва | Приклад |
. | Конкатенація (додавання рядків) | $c = $a.$b (це рядок, що складається з $a і $b) |
Таблиця 2.3. Оператори присвоювання | |||
Позначення | Назва | Опис | Приклад |
= | Присвоювання | Змінній ліворуч від оператора буде присвоєне значення, отримане в результаті виконання яких-небудь операцій або змінної/константи з правої сторони | $a = ($b = 4) +5; ($a буде дорівнює 9, $b буде дорівнює 4) |
+= |
| Скорочення. Додає до змінної число і потім привласнює їй отримане значення | $a += 5; (еквівалентно $a = $a + 5;) |
.= |
| Скорочено позначає комбінацію операцій конкатенації і присвоєння (спочатку додається рядок, потім отриманий рядок записується в змінну) | $b = "Привіт "; $b .= "усім"; (еквівалентно $b = $b . "усім";) У результаті: $b="Привіт усім" |
Таблиця 2.4. Логічні оператори | |||
Позначення | Назва | Опис | Приклад |
and | І | $a і $b істинні (True) | $a and $b |
&& | І |
| $a && $b |
or | Або | Хоча б одна з змінних $a або $b істинна (можливо, що й обидві) | $a or $b |
|| | Або |
| $a || $b |
xor | виключає або | Одна з змінних істинна. Випадок, коли вони обидві істинні, виключається | $a xor $b |
! | Інверсія (NOT) | Якщо $a=True, то !$a=False і навпаки | ! $a |
Таблиця 2.5. Оператори порівняння | |||
Позначення | Назва | Приклад | Опис |
== | Рівність | Значення змінних рівні | $a == $b |
=== | Еквівалентність | Рівні значення і типи змінних | $a === $b |
!= | Нерівність | Значення змінних не рівні | $a != $b |
<> | Нерівність |
| $a <> $b |
!== | Нееквівалентність | Змінні не еквівалентні | $a !== $b |
< | Менше |
| $a < $b |
> | Більше |
| $a > $b |
<= | Менше або дорівнює |
| $a <= $b |
>= | Більше або дорівнює |
| $a >= $b |
Таблиця 2.6. Оператори інкремента і декремента | |||
Позначення | Назва | Опис | Приклад |
++$a | Пре-інкремент | Збільшує $a на одиницю і повертає $a | <? $a=4; echo "Повинно бути 4:".$a++; echo "Повинно бути 5:".$a; ?> |
$a++ | Пост-інкремент | Повертає $a, потім збільшує $a на одиницю |
|
--$a | Пре-декремент | Зменшує $a на одиницю і повертає $a |
|
$a-- | Пост-декремент | Повертає $a, потім зменшує $a на одиницю |
|
Типи даних в РНР.
PHP підтримує вісім простих типів даних.
-
Чотири скалярних типи:
-
boolean (логічний);
-
integer (цілий);
-
float (з плаваючою крапкою);
-
string (стрічковий).
Два змішаних типи:
-
array (масив);
-
object (об'єкт).
І два спеціальних типи:
-
resource (ресурс);
-
NULL.
У PHP не прийняте явне визначення типів змінних. Переважно це робить сам інтерпретатор під час виконання програми в залежності від контексту, у якому використовується змінна. Розглянемо всі перераховані типи даних.