PHP

Матеріал з Вікіпідручника
Перейти до: навігація, пошук

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

Інсталяція[ред.]

Ubuntu[ред.]

sudo apt-get install lamp-server^

Далі ваші скрипти можна буде складати в директорію /var/www/.

Основи[ред.]

Обмежувачі PHP коду[ред.]

Код PHP пишеться всередині спеціальних обмежувачів(тегів), найчастіше це кутні дужки зі знаками питання і назвою мови, ось так:

<?php
    phpinfo();
?>

Все що не всередині таких обмежувачів вважається HTML і передається сервером в HTTP як є.

Насправді існує чотири стилі php обмежувачів. PHP інтерпретатор не завжди їх усіх може розрізняти. Все залежить від налаштувань у файлі php.ini. Тож ось список php обмежувачів, які ви можете зустріти у коді php скриптів:

  • XML- стиль (найбільш бажаний і підтримується серверами по замовчуванню):
<?php  echo '<p> Привіт Світ!</p>'  ?>
  • Скорочений стиль (не завжди доступний, необхідно включити змінну short_open_tags у файлі конфігурації):
<?  echo '<p> Привіт Світ!</p>';  ?>
  • SCRIPT-стиль
<script language='php'>  echo '<p> Привіт Світ!</p>'; </script>
  • ASP-стиль (необхідно включити змінну asp_tags):
<% echo '<p> Привіт Світ!</</p>'; %>

Змінні[ред.]

PHP має дурну манеру починати кожну змінну зі знака долара. І оператор виводу - не функція. Доведеться звикати. Ось так:

$username = 'Петрик П’яточкін';
echo "Вітаємо вас, $username";

Рядки можна поміщати як у одинарні, так і в подвійні лапки, але в подвійних лапках змінні замінюються їх значеннями, а в одинарних - ні.

Зневадження[ред.]

Якщо ваша перша програма працює без помилок - значить щось не так з компілятором. True story. Наприклад сторінка може бути порожньою. Скоріш за все це синтаксична помилка, але PHP мовчить. Щоб він не мовчав - додайте на початок скрипта наступні команди:

ini_set('display_errors', true);
error_reporting(E_ALL);

Потім PHP може почати дратувати вас всілякими зауваженнями в тему і не в тему про те що до таблиць добре створювати індекси, чи чимось подібним. Щоб він тримав свою думку при собі, замініть останній рядок на:

error_reporting(E_ALL & ~E_NOTICE);

Бітова логіка[ред.]

~ - побітове "не"
& - побітове "і"
| - побітове "або"

Розгалуження[ред.]

if($action == 'A') {
    do_a();
} elseif ($action == 'B') {
    do_b();
};

або

switch ($action) {
    case "A":
        do_a();
        break;
    case "B":
        do_b();
        break;
}

Масиви[ред.]

Поля форм[ред.]

Дані GET запиту зберігаються у змінній $_GET, а POST - у $_POST. Змінна $_REQUEST зберігає дані $_GET, $_POST і $_COOKIE.

Cookie[ред.]

Записати кукі на 3600 секунд:

setcookie("user", "Alex Porter", time() + 3600);

Прочитати кукі:

echo $_COOKIE["user"];

Функції[ред.]

Функції в PHP пишуться так як і в більшості мов, за допомогою ключового слова function:

function bold($text) {
    return "<b>$text</b>";
};
function print($text) {
    echo $text;
};

Файли[ред.]

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

Щоб записати деякі дані в файл, необхідно виконати наступні три дії:

  1. Відкрити файл. Якщо файл не існує, то він може створюватись, або ж виконуватись інші передбачені для цього дії.
  2. Записати дані в файл.
  3. Закрити файл.

Аналогічно, щоб прочитати дані з файлу:

  1. Відкрити файл. Якщо файл неможливо відкрити, то потрібно передбачити дії для цієї ситуації.
  2. Прочитати дані з файлу.
  3. Закрити файл.

Для відкриття файлу можна використати функцію fopen(). Приклад:

$fp=fopen ("myfile.txt", 'w');

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

Режими відкриття файлу
Режим Значення
r Режим читання. Відкриває файл для читання, починаючи з початку файлу.
r+ Режим читання. Відкривай файл для читання і запису, починаючи з початку файлу
w Режим запису. Відкривай файл для запису, починаючи з початку файлу. Якщо файл існує, його вміст видаляється. Якщо файл не існує намагається його створити.
w+ Режим запису. Відкриває файл для запису, починаючи з початку файлу. Якщо файл вже існує, його вміст видаляється. Якщо файл не існує пробує його створити.
x Режим обережного запису. Відкриває файл для запису, починаючи з початку файлу. Якщо файл вже існує, він не відкривається, fopen() повертає значення false, а PHP генерує попередження.
x+ Режим обережного запису. Відкриває файл для запису і читання, починаючи з початку файлу. Якщо файл вже існує, він не відкривається, fopen () повертає значення false, a PHP генерує попередження
a Режим дописування. Відкриває файл тільки для дописування (запису) і читання, починаючи з кінця існуючого вмісту, якщо такий є. Якщо файлу не існує, спробує його створити.
a+ Режим допису. Відкриває файл для допису (запису) і читання, починаючи з кінця існуючого змісту, якщо такий є. Якщо файл не існує, пробує його створити.
b Модифікатор, який вказує на роботу (читання і запис) з двійковим файлом; актуальний лише для Windows і в основному використовується вкупі із іншим режимом
t Текстовий режим. Використовується разом з одним із інших режимів. Актуальний лише для Windows. Не рекомендується для використання і використовується лише в деяких випадках.


Прочитати рядки з файлу можна так:

    $file_handle = fopen("names.txt", "r"); // відкриваємо файл names.txt на читання
    while (!feof($file_handle)) { // поки файл не закінчився
        $line = fgets($file_handle); // читаємо рядочок
        if($line) { // щось там з ним робимо
            echo "<li>$line</li>";
        };
    };

далі буде.

Модульність[ред.]

Можна підставити текст одного php-файлу в інший, командою:

include 'header.php'; // підставляємо файл header.php

Переважно сторінки веб-сайту мають певні частини, які не змінюються при навігації. Наприклад, заголовок сторінки ("шапку", header), низ сторінки та спільне меню. Щоб не писати на кожній сторінці один і той же код, зручніше його помістити в окремому файлі і на кожній веб-сторінці підключати цей код. Крім того, в разі необхідності введенні змін у ці частини веб-сторінок, непотрібно буде вводити зміни на кожній веб-сторінці, достатньо лише відредагувати відповідний файл, наприклад header.php, якщо необхідно змінити верх сторінок.

PHP та MySQL[ред.]

PHP працює з MySQL з коробочки (встановлюється без особливих труднощів і зразу ж можна працювати без додаткових засобів). Це зручно. Під’єднується ця вся штука в php скрипті наступним чином:

    mysql_connect('localhost',$username,$password);
    @mysql_select_db($database) or die("Не зміг приєднатись до бази");

localhost — мережева адреса, в даному випадку це локальний комп'ютер, проте це може бути і IP-адреса (наприклад, 127.0.0.1 - та ж локальна IP адреса, або будь-яка інша), і доменне ім'я (www.mytestbase.ua).

$username, $password — змінні, які говорять самі за себе (тобто, ім'я користувача бази даних та його пароль).

$database — ім'я бази даних, яка вже повинна існувати в СУБД MySQL.

Запити пишуться на мові SQL. Запит поміщають у змінну у вигляді рядка, наприклад:

$query="insert into customers values (Null, 'Маклуха Маклай', 'просп. Бажана')";

Наведений у подвійних лапках запит на SQL означає — вставити рядок з трьома полями даних у таблицю customers. Звичайно, щоб усе працювало, відповідна таблиця із стовпцями повинна вже існувати в базі даних.

Далі запит надсилається базі даних так:

    mysql_query($query) or die(mysql_error());

Конструкція з оператором or - це зручний і короткий запис наступного:

if(mysql_query($query)) {
    // ok
} else {
    die(mysql_error());
};

Просто завдяки оптимізації булевих виразів, якщо вираз зліва від or має істинне значення, весь вираз вважається істинним, і права частина не обчислюється.

Вищенаведеним чином можна робити практично усе дозволене з базою даних: створювати таблиці, стовпчики, редагувати поля, одержувати інформацію. Щоправда деякі дії, як то створення початкової структури бази даних зручніше робити у спеціальних засобах. Часто на web-серверах встановлюють спеціальний програмний засіб phpMyAdmin, що надає зручний графічний веб-інтерфейс для роботи з MySQL (створення, перегляд, редагування баз даних та ін). phpMyAdmin корисний при розробці баз даних та тестуванні запитів. Крім того існують програми для встановлення на локальних комп'ютерах, які теж надають таку ж можливість і дозволяються під'єднатися до бази даних з вашого локального комп'ютера як то MySQL Workbench(наявні безкоштовна та платна версії).