PHP: ОСНОВИ
Синтаксис PHP досить простий. Програми на РНР вбудовуються в текст web-страницы так само, як і сценарії на Javascript, Vbscript, за допомогою кутових дужок, що облямовують, із знаками питань і вказівкою мови:
<?php
...
текст програми ...
?>
Команди РНР обов'язково розділяються символом крапки з комою - ";" (символ кінця абзацу або кінця рядка не враховується ніяк), після останньої в програмі команди його можна не ставити. Також символ ";'' не ставиться після умовних операторів (if, switch) і операторів циклу (for, while і інших).
Приклад програми на РНР - на мал. 3.1.

Мал. З.1. Програма на РНР (виділена жирним) в тексті web-страницы Як і у всіх мовах програмування, в РНР є можливість працювати із змінними - якимись об'єктами, що мають ім'я і що можуть набувати різних значень. Проте робота із змінними в РНР, мабуть, найлегша зі всіх можливих. Змінні не треба заздалегідь оголошувати (якщо не знаєте, що це таке - те доки і не треба), хіба що за винятком використання їх у функціях. Для введення нової змінної досить просто привласнити їй яке-небудь значення, а для приміщення значення змінної в рядок тексту, імені файлу або параметра команди, потрібно просто написати її ім'я в тому місці, де має бути її значення. Щоб РНР міг відрізняти змінні від рядків або команд, ім'я змінної повинне починатися із знаку долара - ("$") і не повинно містити пропусків, знаків апострофа і деяких інших символів. При аналізі програмної коди інтерпретатор РНР вважає ім'ям змінної все, що міститься між $ і найближчим до нього символом, недопустимим в імені змінної.
Як імена змінних можна також використовувати інші змінні - для цього іншу змінну слід просто вказати на місці імені першої: $$а.
Змінні в РНР можуть бути чотирьох типів - число (ціле і дріб), рядок тексту, масив і об'ект1. Інтерпретатор РНР автоматично визначає типа змінної на підставі аналізу її вмісту. Детальніше про типів даних ви можете взнати в керівництві по РНР (наприклад, в тому, що доступно з сайту "РНР по-російськи"), там же розказано і про особливості роботи з масивами (і взагалі пояснено, що це таке, якщо ви ще не знаєте).
Для включення числової або строкової змінної в рядок тексту досить просто помістити змінну туди, де вона повинна стояти в цьому рядку. Наприклад, у результаті виконання коди $а="птица півча"; $b="Дятел - $а"; змінній $b буде привласнено значення "Дятел - птицю півчу".
Пам'ятаєте,
що в РНР не можна для складання строкових змінних використовувати символ "+" - він придатний лише для числових виразів. Тому необхідно поміщати змінні в рядки або використовувати команду конкатенації (крапку): $с = $а. $b.
Є ще два типи змінних - PDF-документ і Pdf-інфо, але вони застосовуються лише при роботі з файлами PDF (і при встановленому модулі підтримки PDF).
Досить часто використовуються скорочені позначення арифметичних дій над змінними і дій з привласнення ним яких-небудь значень. Наприклад, команда $а+= 3 означає, що змінну $а треба збільшити на 3, що і буде зроблено, якщо вона має числовий формат. Так само команда $а- = 3 зменшує змінну $ а на 3, а команди $а*=2 і $а/=2 відповідно умножають і ділять на два змінну $а. Команда $а.=" рядок" еквівалентний команді $а="$а рядок".
У РНР застосовуються також операції інкремента і декремента -т.е. зміни значення змінній на 1. Так, команди $а++ і $а-- відповідно збільшують і зменшують значення змінної $а на одиницю. Те ж саме роблять і команди ++$а, --$а, проте, в тому випадку, якщо подібна команда використовується у вираженні, вони, на відміну від попередніх, спочатку змінюють значення змінної, а потім видають його у вираження. Іншими словами, якщо змінна $а рівна 2, то після виконання команди $b=$а++; її значення досягне 3, а $b буде встановлена в 2. В той же час команда $b= + + $а; встановить обидві змінні в 3.
Масив - це сукупність під одним ім'ям перенумерованих змінних. Ім'я кожної змінної в масиві складається з імені цього масиву і індексу змінної - щось начеб номери змінної в масиві або її імені в нім. Індекс змінної може бути цифровим або символьним - тобто бути або номером змінної в масиві, або її ім'ям в нім.
Наприклад, ось масив з числовими індексами (нумерація індексів починається з нуля, а не одиниці!):
$а[0]=100; $а[1]=101; $а[2]=102;
а ось з символьними:
$а['first']=100; $а['second']=101; $а['third']=102;
(Масив з числовими індексами називається ще "скалярним", а з символьними - "асоціативним".)
Навіщо потрібні масиви? А для того, щоб можна було до них звертатися як до чогось цілого, тим самим дістаючи можливість можливість здійснювати автоматичні дії зі всіма елементами масиву або з частиною цих елементів, не вказуючи імені кожного їх елементу.
Іншими словами - скажімо, в якісь змінні записали імена клієнтів і тепер бажаний вивести їх. Як це зробити? Природно,
лише перебравши всі ці змінні, для чого нам знадобляться імена цих змінних, які доведеться жорстко задати в програмі. А якщо заздалегідь невідомо, скільки буде клієнтів, як тоді бути? Якщо ж імена клієнтів помістити в масив, то все їх можна перебрати спеціальною командою, додати ж нове ім'я теж неважко.
У РНР додавати елементи в масив можна як
явно вказуючи індекс елементу (наприклад $а [100] =
"Андрій";), так і просто згадуючи, в який масив цей елемент додається - $а [ ] = "Андрей" ;. У останньому випадку елемент, що додається, стає останнім в масиві.
Нижче перераховані деякі основні команди РНР, які сповна вистачить для реалізації нескладних проектів. Для повнішого ознайомлення з командами РНР можна вивчити Керівництво по цій мові, доступне, наприклад, з адреси http://php.spb.ru, або інші публікації.
include "ім'я файлу" - команда для включення вмісту одного файлу в іншій. Вміст файлу, ім'я якого вказується в команді, цілком і повністю вставляється на те місце, де розташовується ця команда, при цьому всі коди РНР, що містяться у файлі, що вставляється, виконуються так само, як якби вони були на місці цієї команди. (Пам'ятаєте, що файл саме вставляється - т. е., наприклад, дороги до картинок, які мають бути присутніми у файлі, що вставляється, слід вказувати від місцезнаходження того файлу, в якому знаходилася команда include.)
Якщо файл,
що включається в сторінку за допомогою команди include, відсутній, то замість нього розміщується повідомлення про це, а програма на РНР виконується далі. (При необхідності завершення обробки і видачі web-страницы в разі відсутності файлу, що включається, замість команди include слід використовувати команду require.)
mail ("Кому", "Тема", "Текст повідомлення", "Додаткові заголовки") - відправка поштового повідомлення. При виконанні даної команди на сервері відповідно до вказаних параметрів формується електронний лист і вирушає за допомогою встановленої на сервері поштової програми. Як параметр "Кому" може виступати набір адрес, розділених комами. "Додаткові заголовки" можуть бути будь-які (природно, допустимі поштовими протоколами!), розділятися вони повинні
повинні комбінацією символів /п, яка в РНР означає переведення рядка. (Якщо серед "Додаткових заголовків" не вказано поле From, то воно заповнюється за умовчанням поштовою програмою web-сервера, наприклад, ім'ям "Unprivileged User".)
echo ("текст") - вивід на web-страницу якого-небудь тексту. Щоб вивести на web-страницу значення якої-небудь змінної, досить просто написати її ім'я усередині рядка, що виводиться: команда echo "це цифра $а" виведе в web-страницу текст "це цифра 1", якщо раніше змінною $а було привласнено значення, рівне одиниці. У разі потреби використовувати в рядку, що виводиться, лапки або інші спеціальні символи перед цими символами слід ставити символ " \".
if (умова) {...команди, які повинні виконуватися, якщо умова вірна...;} else {...команди, які повинні виконуватися, якщо умова невірна... } -команда, що дозволяє виконати те або інша дія залежно від істинності вірності або помилковості тієї або іншої умови. У фігурних дужках може розташовуватися декілька команд, розділених крапкою з комою. Як умова може бути оператор порівняння "рівно" - ("==") (саме два-знаку рівності!), "більше" -(">"), "менше" - ("<") і їх комбінації, скажімо, "< = " - ("менше або рівно"). Можна використовувати і декілька умов, узявши кожне з них, а також всі разом в дужки і розділяючи знаками "&&" - ("і") або "| |" -("або").
Для того, щоб виконувати різні команди залежно від умови, яка може приймати три або більше значень, слід використовувати оператора switch (опис дивитеся нижче) - аналог оператора case в VBA і деяких інших мовах.
for (початкове значення лічильника, умова продовження циклу, зміна лічильника на кожному циклі) { . . . команди. . . ;} - цикл, тобто повторення вказаних в нім команд стільки раз, скільки дозволить умову зміни лічильника циклу (т. с. змінною, спеціально виділеною для підрахунку числа виконань команд циклу). Наприклад цикл for ($i = 1; $i <= 10; $i + +) {echo $i;} виводить в web-страницу числа з 1 до 10, оскільки в нім спочатку встановлюється значення лічильника в 1 - ($i = l), кожен цикл його значення збільшується на 1 - ($i ++), а продовжуватися він буде до тих пір, поки значення лічильника не перевищить 10 (тобто доки $i< = 10).
while (умова) { . . .команди. . . } - цикл з умовою. Команди у фігурних дужках виконуються до тих пір, поки виконується умова в заголовку циклу. Для того, щоб цикл урвався, потрібно, щоб умова виконуватися перестало - тому усередині циклу необхідно передбачити можливість впливати на цю умову. Скажімо, цикл while ($i<= 10) { . . .команди. . . ; $i++; } виконуватиметься до тих пір, поки значення змінної $i не перевищить 10 -еслі спочатку воно дорівнювало 1, то цикл виконається 10 разів.
Цикл do {. . .команди. . . } while (умова) працює так само, проте команди, вказані у фігурних дужках, будуть виконані щонайменше один раз - навіть якщо умова виконуватися не буде.
Перервати виконання будь-якого циклу можна оператором break -дальнейшєє виконання програми піде з команди, наступної після закриваючої фігурної дужки. Оператор же continue перериває поточну стадію виконання циклу, тобто після цього оператора подальше виконання програми почнеться з чергової перевірки умови заголовка циклу.
switch (вираження) {case значення: ... команди...; break; case інше значення: ... команди...; break;}
- оператор вибору. При його роботі вміст, поміщений у фігурні дужки, є видимим зверху вниз. Як тільки буде знайдений оператор case із значенням, співпадаючим із значенням вираження, РНР почне виконувати весь код, наступний за цим оператором case до останньої фігурної дужки оператора switch або до першого оператора break, залежно від того, що з'явиться раніше. (Звернете увагу, що якщо команду break не вказати в кінці коди, що відноситься до одного варіанту значення вираження в заголовку оператора switch, PHP виконуватиме код далі - тобто той, який належить вже наступному операторові case! Це - одна з відмінностей даного оператора від аналогічних в інших мовах програмування.)
В
кінці оператора switch можна вказати оператора default. Код, що стоїть після нього, виконається в тому випадку, якщо значення вираження в заголовку оператора не збіжиться ні з одним із значень після операторів case.
foreach (змінна as масив) { . . .команди. .. ;} -
почергове прочитування всіх елементів масиву. Foreach прочитує у вказану в його параметрах змінну по черзі всі елементи вказаного в них же масиву, виконуючи кожного разу вказаний у фігурних дужках код, в якому може використовуватися вказана змінна. (Значення елементів масиву цим оператором лише прочитуються, їх модифікація за допомогою команди f oreach неможлива.) Оператор f oreach може бути використаний лише в РНР версії 4.0 і вище.
Програма
на РНР може уриватися кодом web-страницы - для цього досить вставити закриваючий тег до цієї коди і що відкриває - після. Все, що знаходиться між ними, видаватиметься в браузер без якої-небудь обробки, розглядаючись як що виводиться за допомогою команди echo. Іншими словами, код
<?php if ($a==l) { ?><р>переменная а рівна 1</p><?php> }?>
еквівалентний коду
<?php if ($a==l) {echo "<p> Змінна а рівна
1</p>";}?>
проте, перший варіант менше навантажує процесор комп'ютера, на якому розташований інтерпретатор РНР.
Із сказаного також виходить, що всі програми на РНР, розташовані на одній web-странице, є однією великою програмою, не дивлячись на те, що вони розділяються блоками звичайного тексту сторінки. Саме тому змінна, оголошена в розташованому на початку сторінки коді, зберігає своє значення не лише до її кінця, але і у всіх приєднуваних за допомогою команди include файлах. Приклад - на мал. 3.2.
У РНР можна створювати функції - підпрограми, які можна викликати по своїх іменах, при необхідності передаючи їм певну інформацію. Необхідні вони у тому випадку, коли один і той же код потрібно виконувати кілька разів для різних даних, особливо якщо необхідна кількість виконань заздалегідь невідома. Створити функцію на РНР можна, вставивши в програму інструкцію function ім'я (змінні, в які записуються передавані параметри, і їх тип) {...команди функції . . . }, а викликати - простою вказівкою імені цієї функції і параметрів.

Мал. 3.2. Приклад PHP-кода. Поглянете уважно на код і результат його
відображення. Звернете увагу, що змінна а, якою привласнено
значення ще в першому програмному блоці лівої сторінки, зберегла його
не лише у інших її блоках, але і в програмі, розташованій в
що
включається за допомогою команди include сторінці Пам'ятаєте, що змінні, створені у функції, за умовчанням мають встановлене значення лише усередині функції. Крім того, також за умовчанням змінні, оголошені зовні функції, в ній самій жодного значення не мають, а якщо треба, щоб мали, то спочатку функції їх слід "підключити" командою global <пе-ременная>; - і лише після цього вони стануть доступними у функції. Детальніше про функції і про змінні в них читайте в керівництві по РНР, наприклад, з того ж сайту http://php.spb.ru.
Зазвичай web-сервер набудовується так, що на предмет наявності програм на РНР є видимими файли, що мають розширення .php, .php3, .phtml, останні ж файли передаються в браузер користувача без пошуку в них команд РНР. Робиться так для швидшої роботи сервера, а також для забезпечення можливості установки на сервері різних інтерпретаторів (наприклад, SSI - Server Side Includes, технології, в якійсь мірі передуючої РНР), оскільки тоді кожному з інтерпретаторів призначаються свої розширення для обробки відповідних файлів.
Оскільки РНР-код повністю виконується на web-сервере, то в сторінках, що видаються браузеру, він буде відсутній, і якщо хто зацікавиться вашим досвідом програмування, то вам доведеться відправляти йому цей код поштою, оскільки при перегляді сайту яким-небудь чином взнати вихідний PHP-код його сторінок не можна.
|