Роздрукувати сторінку
Главная \ Методичні вказівки \ Методичні вказівки \ 3546 Короткі теоретичні відомості про PHP, Проектування інформаційних ресурсів Інтернет, ЗНТУ

Короткі теоретичні відомості про PHP, Проектування інформаційних ресурсів Інтернет, ЗНТУ

« Назад

4. Короткі теоретичні відомості про PHP

4.1. Основні положення

PHP - це мова вбудованих в HTML-сторінки сценаріїв, що виконуються на сервері. Синтаксис запозичений з таких мов, як С, Perl, Java, і при цьому додана маса можливостей, яких цим мовам бракує.

Основні переваги РНР:

  • безкоштовна;

  • постійно вдосконалюється;

  • працює на UNIX і Windows платформах;

  • має широкий набір функцій (більше 3 тис.);

  • припускає об’єктно-орієнтоване програмування.

Головним достоїнством РНР є здатність роботи з базами даних (MySQL, PostgreSQJL, InterBase, MS SQL і ін.).

Для тестування PHP скриптів необхідно встановити веб-сервер і інтерпретатор PHP. Можна скористатися пакетом Denwer (http://denwer.ru), який уже містить всі необхідні компоненти й настройки. Усі подальші коментарі припускають, що на вашій локальній машині встановлений пакет Denwer у директорію С:\WebServers\.

Файли з HTML кодом, які містять РНР код, повинні мати розширення .php. Тіло скипта обрамляється символами <?php і ?>. Скрипт може вбудовуватись в будь-яке місце HTML коду, більше того, РНР скрипти можуть чергуватися з HTML кодом. На відміну від сценаріїв, написаних на javascript, PHP скрипти виконуються не браузером, а сервером, тому кінцевий користувач відкриває в браузері вже остаточно згенерований сервером HTML код сторінки, у якому відсутні елементи PHP коду. Наприклад, для того, щоб переконатися в тому, що РНР сценарії обробляються, напишемо найпростіший код 

<html>
 <head>
 <title>Приклад</title>
 </head>
 <body>
 <?php 

 echo "Привіт, я - скрипт PHP!"; 
 ?>
 </body>
 </html>
 

Далі зберігаємо файл з ім'ям index.php у папці C:\WebServers\home\site1\www\. Потім запускаємо Denwer і в адресному рядку браузера набираємо http://site1, після чого у вікні браузера спостерігаємо текст

Привіт, я - скрипт PHP! 

Неважко здогадатися, що оператор echo здійснює виведення інформації на екран. Аналогічно діє команда print.

Якщо тепер подивитися HTML код сторінки, ми побачимо таке 

<html>
 <head>
 <title>Приклад</title>
 </head>
 <body>
 Привіт, я - скрипт PHP!
 </body>
 </html>
 

Як бачимо, сервер обробив скрипт, згенерував HTML код сторінки й жодних слідів від РНР не залишилося. Більше того, у РНР скрипт можна впакувати всю сторінку 

<?php
echo "<html><head>"; 
echo "<title>Приклад</title>"; 
echo "</head>"; 
echo "<body>"; 
echo " Привіт, я - скрипт PHP!”;
echo "</body>"; 
echo "</html>"; 
?>
 

Результат буде таким самим.

При написанні програм на РНР, наприкінці кожного виразу необхідно ставити крапку з комою. Коментарі обрамляються сиволами /* і */. Однорядкові коментарі пишуть після комбінації //.

Далі розглянемо основні конструкції мови РНР. 

4.2. Змінні в PHP 

Імена змінних починаються зі знака $, після якого повинна слідувати буква. Імена змінних чутливі до регістра букв: наприклад, $var - не те ж саме, що $Var або $VAR. Ім'я змінної може складатися з будь-яких символів ASCII, код яких більше 127. Однак кириличні символи використовувати все-таки не рекомендується.

Важливою перевагою PHP є те, що в PHP не потрібно описувати змінні явно, та вказувати їхній тип. Інтерпретатор все це робить сам. Однак іноді він може помилятися (наприклад, якщо в текстовому рядку насправді задане десяткове число), тому зрідка виникає необхідність явно вказувати, який же тип має той або інший вираз.

Для роботи зі змінними в PHP є спеціальні функції:

isset() - перевіряє, чи була оголошена змінна й чи відрізняється її значення від NULL;

empty() - аналог isset();

unset() - убудована функція мови, що видаляє значення змінної й видаляє саму змінну зі списку доступних змінних. 

4.3. Типи даних (змінних) в PHP 

PHP підтримує 8 базових типів даних:

  • 4 скалярні типи:

boolean. Логічний тип даних, змінні цього типу можуть набувати значення true (правда) або false (неправда).

integer. Цілочисельний тип даних, змінні можуть набувати цілі значення (...-2, -1, 0, 1, 2...) у діапазоні від -2^31 до +2^31. Якщо значення перевищує цей поріг - воно автоматично переводиться в тип float.

float. Числовий тип даних із плаваючою точкою, може містити як цілі, так і дробові величини.

string. Строковий тип даних. Містить довільну кількість різних символів. PHP не накладає ніяких обмежень на довжину рядка.

  • 2 комплексних типи:

array. Масив, містить упорядкований список елементів.

object. Об'єкт, містить якийсь об'єкт (екземпляр класу).

  • 2 спеціальні типи:

resource. Посилання на абстрактний елемент, т.зв. зовнішній ресурс. Приклади зовнішніх ресурсів - посилання на файл і посилання на результат виконання запиту.

NULL. Порожній тип даних, що позначає відсутність якого-небудь значення. Про такі значення звичайно говорять "не визначене". Порожнім значенням можна ініціалізувати змінні будь-якого іншого типу.

Є функція gettype(), що повертає тип, який РНР призначив для змінної. Існує також функція settype(), що явно встановлює тип.

Трохи докладніше розглянемо масиви, оскільки при взаємодії з базами даних доводиться оперувати з масивами.

Існує два типи масивів, що відрізняються за способом ідентифікації елементів.

У масивах першого типу елемент визначається індексом у послідовності. Такі масиви називаються простими масивами. Нумерація починається з нуля.

Ініціалізація масиву здійснюється двома способами.

а) Поелементно. 

 $mass[0] = "Нуль";

 $mass[1] = "Один";

 $mass[2] = "Два";

 $mass[3] = "Три"; 

Крім того, можна не вказувати індекс. PHP автоматично привласнить елементу індекс останнього елемента плюс один, тобто додасть елемент у кінець масиву. 

 $mass[] = "Нуль";

 $mass[] = "Один";

 $mass[] = "Два";

 $mass[] = "Три"; 

б) Можна вказати всі елементи масиву відразу. 

$mass = array ("Нуль", "Один", "Два", "Три"); 

Масиви другого типу мають асоціативну природу, і для звертання до елементів використовуються ключі, логічно пов’язані зі значеннями. Такі масиви називають асоціативними масивами. Основною відмінністю асоціативних масивів від списків є можливість звертання до елементу масиву не по числовому індексу, а по індексу у вигляді рядка. Індекси асоціативного масиву називаються ключами.

 $mass ["Один"] = 1;

 $mass ["Два"] = 2;

 $mass["Три"] = 3;

 echo $mass ["Один"]; //Виведе число 1 

Для ініціалізації асоціативних масивів можна також використовувати інструкцію array(): 

 $mass = array ("Один" => 1, "Два" =>, "Три" => 3);

 echo $mass["Один"]; //виведе число 1 

Функції array_keys() і array_values() дозволяють одержати всі ключі і всі значення асоціативного масиву відповідно.

Припускається використання багатовимірних масивів. Наприклад, кожному елементу одномірного масиву можна привласнити інший масив, у результаті одержимо двовимірний масив: 

$A["Ivanov"] = array("name"=>"Іванов И.И.", "age"=>"25", 
 "email"=>"ivanov@mail.ru");

 $A["Petrov"] = array("name"=>"Петров П.П.", "age"=>"34", 
 "email"=>"petrov@mail.ru");

 $A["Sidorov"] = array("name"=>"Сидоров С.С.", "age"=>"47", 
 
email"=>"sidorov@mail.ru");

4.4. Оператори 

Оператори дозволяють виконувати різні дії зі змінними, константами і виразами. Далі наведені основні групи операторів. 

Арифметичні оператори 

Таблиця 4.1

+

Додавання

-

Віднімання

*

Множення

/

Ділення

%

Обчислення залишку по модулю (наприклад: 5 % 2=1)

Порозрядні оператори

Ця група операторів працює з бітовими зображеннями значень цілочисельних операндів 

Таблиця 4.2

&

Порозрядна кон’юнкція (AND)

|

Порозрядна диз’юнкція (OR)

^

Порозрядне виключне АБО (XOR)

~

Порозрядне заперечення (NOT)

<<

Зсув вліво бітового значення лівого цілочисельного операнда на кількість розрядів, що дорівнюють значенню правого цілочисельного операнда

>>

Зсув вправо бітового значення лівого цілочисельного операнда на кількість розрядів, що дорівнюють значенню правого цілочисельного операнда

Логічні оператори 

Таблиця 4.3

OR або ||

АБО (диз’юнкція)

XOR

АБО (виключна диз'юнкція)

AND або &&

 І (кон’юнкція)

! або NOT

НЕ (заперечення)

Оператори цієї групи, на відміну від порозрядних, працюють із логічними змінними (boolean) і використовуються для побудови логічних виразів. 

Оператори рівності 

Таблиця 4.4

Приклад

Назва

Результат 

$a==$b

Перевірка рівності

Істина, якщо $а й $b рівні

$а != $b

Перевірка нерівності

Істина, якщо $а й $b не рівні

$а === $b

Перевірка ідентичності

Істина, якщо $а й $b рівні й мають однаковий тип

Оператори порівняння

Оператори порівняння (табл. 4.5), як і логічні оператори, дозволяють управляти логікою програми й приймати рішення при порівнянні двох і більше змінних. 

Таблиця 4.4

Приклад

Назва

Результат

$a<$b

Менше

Істина, якщо змінна $а менше $b

$a>$b

Більше

Істина, якщо змінна $а більше $b

$a <= $b

Менше або дорівнює

Істина, якщо змінна $а менше або дорівнює $b

$a >= $b

Більше або дорівнює

Істина, якщо змінна $а більше або дорівнює $b

($a=12)?5: -1

Тернарний оператор

Якщо змінна $а дорівнює 12, вертається значення 5, а якщо не дорівнює — вертається 1

Зверніть увагу: оператори порівняння призначені для роботи тільки із числовими значеннями. 

Інкремент і декремент

  • $a++ повертає старе значення $a і збільшує $a на 1

  • ++$a збільшує $a на 1 і повертає нове значення $a

  • $a-- повертає старе значення $a і зменшує $a на 1

  • -і$a зменшує $a на 1 і повертає нове значення $a 

Оператори присвоєння

Для присвоєння змінній нового значення використовується оператор "=":

$a = $b + $c - 127;

Також існують скорочені оператори присвоєння (+=, -=, /=, *=, %=):

$a = $a + 1; рівнозначно $a += 1; 

Логічний оператор if ...else

Оператор if дозволяє формувати структури, що розгалужуються. Існує декілька форм оператора

a)if (вираз) {блок операторів для виконання}

б) if (вираз) {блок1} else {блок2}

в) if (вираз1) {блок1}

 elseif (вираз2) {блок2}

 else {блок3}

Робота оператора не вимагає пояснень, оскільки аналогічні конструкції присутні в багатьох мовах програмування.

Приклад: 

<?php

if($a>$b ) { print "a більше b"; $c=$b; }

 elseif($a==$b) { print "a дорівнює b"; $c=$a; }

 else { print "a менше b"; $c=$a; }

 ?> 

Оператор switch

Оператор switch (перемикач) зручний, коли потрібне значення змінної або виразу порівнювати з певними величинами й виконувати той або інший фрагмент коду залежно від результатів порівняння. Приклад: 

<?php

$x=2;

 switch($x){

 case 1:

 echo"x дорівнює 1";

 break;

 case 2:

 echo"x дорівнює 2";

 break;

 case 3:

 echo"x дорівнює 3";

 break;

 }

 ?> 

Оператор циклу із передумовою

Синтаксис оператора

While ( логічний вираз ){тіло циклу} 

Цикл продовжує виконуватися, поки логічний вираз залишається правдивим. Якщо логічний вираз з самого початку має значеня false, тіло циклу жодного разу не виконається.

Приклад: 
<?
//ця програма надрукує всі парні цифри
 $i = 1;
 while ($i < 10) {
 if ($i % 2 == 0) print $i; 
 // друкуємо цифру, якщо вона парна 
 $i++; 
 // і збільшуємо $i на одиницю
 }
?> 

Оператор циклу з післяумовою

На відміну від циклу while, цей цикл перевіряє значення виразу не до, а після кожного проходу. Таким чином, тіло циклу виконується хоча б один раз. Виглядає оператор так: 

do {

 тіло циклу;

 } while(логічний вираз); 

Універсальний цикл for

Цей цикл дозволяє вказати явно закон зміни параметрів циклу. Формат конструкції такий: 

For(ініціалізуючі_команди;умова_виходу із циклу; команди_після_проходу){тіло_циклу;} 

Приклад: 

<?php 
 // друкуємо парні числа від 0 до 8
for ($i=0; $i<10; $i++)
{ if ($i % 2 == 0) print $i;}
?> 

Якщо тіло циклу не містить команд або містить тільки одну команду, фігурні дужки можна не писати. 

4.5. Функції РНР 

Функції використовуються для неодноразового виконання однієї й тієї ж послідовності дій, але над різними вихідними даними й у різних місцях скрипта. Функції бувають користувальницькими й системними. Користувальницькі функції (як свідчить назва) програміст пише самостійно. Системні функції завжди доступні з будь-якого місця скрипта й оголошувати їх не треба. У старих версіях PHP функція повинна була бути оголошена до першого використання, але в PHP версії 4.3 і вище порядок оголошення й використання функції може бути довільним. Синтаксис користувальницької функції 

function Ім'я_функції (параметр1, параметр2, ... параметр)
{ Тіло функції 
return "значення, що повертає_ функція";
}

Для передачі результату роботи користувальницьких функцій в основну програму (скрипт) використовується конструкція return. Якщо функція нічого не повертає, конструкцію return не вказують. Конструкція return може повертати все, що завгодно, у тому числі й масиви.

Наведемо приклади використання користувальницьких функцій: 

<?php

function funct()

 { $number = 123;

 return $number;

 }

 $a = funct();

 echo $a;

 ?> 

У розглянутому прикладі функція funct повертає за допомогою конструкції return число 123.

Перелік системних функцій можна знайти в спеціальних довідниках. Для наших завдань буде потрібно лише декілька функцій у контексті взаємодії з MySql, які будуть розглянуті в наступному розділі.

З повагою ІЦ "KURSOVIKS"!