Деякі переваги РНР. До конкурентів РНР відносяться Perl, Active Server Pages (ASP) від Microsoft, Java Server Pages (JSP) і Allaire Cold Fusion.
РНР володіє безліччю переваг в порівнянні з цими продуктами:
• Висока продуктивність
• Наявність інтерфейсів до багатьом різним системам баз даних
• Вбудовані бібліотеки для виконання багатьох загальних завдань, пов'язаних з Web
• Низька вартість
• Простота вивчення і використання
• Перемістимість
• Доступність вихідної коду
Продуктивність.РНР виключно ефективний. Використовуючи єдиний нешляхуй сервер, можна обслуговувати мільйони звернень в день. Результати тестування, опубліковані компанією Zend Technologies (http://www.zend.com), підтверджують вищу продуктивність РНР в порівнянні з конкуруючими продуктами.
Інтеграція з базами даних.РНР володіє вбудованою зв'язністю з багатьма системами баз даних. На додаток до MYSQL, в числі інших можна безпосередньо підключатися до баз даних POSTGRESQL, mSQL, Oracle, dbm, Hyperware, Informix, InterBase і Sybase.
Використовуючи Open Database Connectivity Standard (Стандарт відкритого інтерфейсу зв'язку з базами даних, ODBC), можна підключатися до будь-якої бази даних, для яких існує ODBC-драйвер. Це поширюється на продукти Microsoft і багатьох інших компаній.
Вбудовані бібліотеки.Оскільки РНР був розроблений для використання в Web, він має безліч строєних функцій для виконання широкої різноманітності корисних, пов'язаних з Web, завдань. З його допомогою можна "на льоту" генерувати GIF-изображения, підключатися до інших мережевих служб, відправляти повідомлення електронної пошти, работать з cookie-наборум і генерувати PDF-документы за допомогою декількох рядків коду.
Вартість.Пакет РНР є безкоштовним. Найбільш нову версію можна у будь-який момент абсолютно безкоштовно вивантажити з http://www.php.net.
Вивчення РНР.Синтаксис РНР грунтується на інших мовах програмування, в першу чергу на З і Perl, Якщо ви вже знайомі із З, Perl або з-подібною мовою, таким як C++ або Java, то майже відразу зможете ефективно використовувати РНР.
Переносимість.Пакет РНР можна використовувати під управлінням багатьох різних операційних систем. Код РНР можна створювати в середовищі таких безкоштовних Unix-подобных операційних систем, як Linux і FREEBSD, комерційних версій Unix типа Solaris і IRIX або різних версій Microsoft Windows. Як правило, програми працюватимуть без яких-небудь змін в різних середовищах зі встановленим РНР.
Вихідний код.Користувач має доступ до вихідного коду РНР. На відміну від комерційних закритих програмних продуктів, якщо потрібне що-небудь змінити або додати в цій мові, то це завжди можна зробити. Не слід чекати, поки фірма-виготівник випустить правки (патчи). Немає необхідності турбуватися про те, що виготівник збирається покинути ринок або перестане підтримувати продукт.
Синтаксис і граматика. Синтаксис PHP запозичений безпосередньо з C. Java і Perl також вплинули на синтаксис даної мови.
Перехід з HTML. Є три способи виходу з HTML і переходу в "режим PHP коду":
1. <? echo("простий спосіб, інструкція обробки SGML\n"); ?>
2. <?php echo("при роботі з XML документами робіть так\n"); ?>
3. <script language="php">
echo ("деякі редактори (подібні FrontPage) не люблять оброблювальні інструкції");
</script>;
4. <% echo("Від PHP 3.0.4 можна факультативно застосовувати ASP-тэги"); %>
Розділення інструкцій. Інструкції (твердження) розділяються також як в C або Perl - крапкою з комою. Закриваючий тег (?>) теж має на увазі кінець твердження, тому наступні записи еквівалентні:
<php
echo "Це тест";
?>
<php echo "Це тест" ?>
Типи змінних.PHP підтримує змінні наступних типів:
· integer - ціле
· double - число з дробовою частиною
· string - строкова змінна
· array - масив
· object - об'єктна змінна
· pdfdoc - PDF-документ (лише за наявності підтримки PDF)
· pdfinfo - PDF-инфо (лише за наявності підтримки PDF)
Тип змінної зазвичай не встановлюється програмістом; замість цього, він визначається PHP під час виконання програми, залежно від контексту, в якому вона використовується. Якщо вам подобається вказувати типа змінної безпосередньо, використовуйте для цього інструкцію cast або функцію settype(), але врахуйте, що змінна може поводитися по-різному, залежно від того, який тип визначений для неї зараз.
Ініціалізація змінної.Для ініціалізації змінної в PHP ви просто привласнюєте їй значення. Для більшості змінних це саме так; для масивів і об'єктних змінних, проте, може використовуватися декілька інший механізм.
Ініціалізація масивів. Масив може ініціалізуватися одним з двох способів: послідовним привласненням значень, або за допомогою конструкції array().
При послідовному додаванні значень в масив ви просто записуєте значення елементів масиву, використовуючи порожній індекс. Кожне подальше значення додаватиметься як останній елемент масиву.
$names[] = "Jill"; // $names[0] = "Jill"
$names[] = "Jack"; // $names[1] = "Jack"
Як в C і Perl, елементи масиву нумеруються, починаючи з 0, а не з 1.
Ініціалізація об'єктів. Для ініціалізації об'єктної змінної використовуйте нове розпорядження для зіставлення даного об'єкту об'єктною змінною.
class foo {
function do_foo () { echo "Doing foo."; }
}
$bar = new foo;
$bar -> do_foo ();
Область змінної.Областю змінної є контекст, усередині якого вона визначена. Зазвичай всі змінні PHP мають одну область. Проте, усередині функцій визначених користувачем, представлена локальна область функції. Будь-яка змінна, визначена усередині функції, за замовчуванням обмежена локальною областю функції. Наприклад:
$а = 1; /* глобальна область */
Function Test () {
echo $a; /* посилання на змінну локальної області */
}
Test ();
Цей скрипт не видасть що-небудь на виході, оскільки інструкція echo відноситься до локальної версії змінної $a, значення якої привласнюється не усередині цієї області. Ви можете відмітити, що тут є деяка відмінність від мови C, в тому, що глобальні змінні в C автоматично діють і усередині функцій, якщо лише вони не переписуються локальними визначеннями. Це може викликати деякі проблеми, оскільки по необережності можна змінити глобальну змінну. У PHP глобальні змінні мають бути продекларовані глобально усередині функції, якщо передбачається їх використання в даній функції. Наприклад:
$а = 1;
$b = 2;
Function Sum () {
global $a, $b;
$b = $a + $b;
}
Sum ();
echo $b;
Цей скрипт видасть значення "3". Оскільки $a і $b декларуються глобально усередині функції, посилання на дані змінні трактуючи як посилання на їх глобальні версії.
Другим способом доступу до змінних з глобальної області є використання спеціального визначуваного масиву PHP $GLOBALS. При цьому попередній приклад може бути записаний як:
$а = 1; $b = 2;
Function Sum () { $GLOBALS["b"] = $GLOBALS["а"] + $GLOBALS["b"]; }
Sum ();
echo $b;
Масив $GLOBALS є асоціативним, в якому ім'я глобальної змінної є ключем, а значення цієї змінної є значенням елементу масиву.
Іншою важливою характеристикою від області визначення змінної є статична змінна. Статична змінна існує лише в локальної області функції, але вона не втрачає свого значення, коли програма, при виконання, покидає цю область. Розглянемо наступний приклад:
Function Test () {
$а = 0;
echo $a;
$a++;
}
Ця функція абсолютно даремна практично, оскільки кожного разу при її виклику вона встановлює $a у 0 і виводить "0". Вираз $a++ так само марно, оскільки при виході з функції змінна $a зникає. Для додання дієздатності функції підрахунку змінна $a декларується як статична:
Function Test () {
static $a = 0;
echo $a;
$a++;
}
Тепер при виклику функції Test() вона виводитиме значення $a і збільшувати його.
Статичні змінні також вельми істотні, коли функції викликаються рекурсивно. Рекурсивні функції - це ті, які викликають самі себе. Складати рекурсивну функцію потрібно уважно, оскільки при неправильному написанні можна зробити рекурсію невизначеною. Ви маєте бути упевнені в адекватності способу припинення рекурсії. Наступна проста функція рекурсивно вважає до 10:
Function Test () {
static $count = 0;
$count++;
echo $count;
if ($count < 10) {
Test ();
}
$count--;
}
Змінні змінні.Інколи буває зручно давати змінним змінні імена. Такі імена можуть змінюватися динамічно. Звичайна змінна встановлюється так:
$а = "hello";
Змінна змінна бере деяке значення і обробляє його як ім'я змінної. У наведеному вище прикладі значення hello може бути використане як ім'я змінної, за допомогою вживання два записаних підряд знаків долара, т.е.:
$$а = "world";
З цієї точки зору, дві змінних визначені і збережені в символьному дереві PHP: $a з вмістом "hello" і $hello з вмістом "world". Так, інструкція:
echo "$a ${$a}";
здійснює те ж саме, що і інструкція:
echo "$a $hello";
а саме, обоє вони виводять: hello world.
Аби використовувати змінні змінні з масивами, вирішите проблему неоднозначності. Це означає, що якщо ви пишете $$a[1], то синтаксичному аналізатору необхідно знати, чи маєте ви у вигляді використовувати $a[1] як змінну, або ви передбачаєте $$a як змінну, а як індекс цієї змінної. Синтаксис для дозволу неоднозначності такий: ${$a[1]} для першого випадку і ${$a}[1] для другого.
Змінні зовні PHP. HTML Форми (GET і POST)
Коли програмою-обробником форми є PHP-скрипт, змінні цієї форми автоматично доступні для даного скрипта PHP. Наприклад, розглянемо наступну форму:
<form action="foo.php" method="post">
Name: <input type="text" name="name"><br>
<input type="submit">
</form>
При активізації форми PHP створить змінну $name, значенням якої буде той вміст, який було введено в поле Name: даної форми.
PHP також сприймає масиви в контексті змінних форми, але лише одновимірні. Ви можете, наприклад, групувати взаємозв'язані змінні разом або використовувати цю властивість для визначення значень змінних при множинному виборі на вході:
<form action="array.php" method="post">
Name: <input type="text" name="personal[name]"><br>
Email: <input type="text" name="personal[email]"><br>
Beer: <br>
<select multiple name="beer[]">
<option value="warthog">Warthog
<option value="guinness">Guinness
</select>
<input type="submit">
</form>
Якщо PHP-атрибут track_vars включений, через установку конфігурації track_vars або директивою <?php_track_vars?>, тоді змінні, активізовані за допомогою методів POST або GET, також знаходитимуться в глобальних асоціативних масивах $HTTP_POST_VARS і $HTTP_GET_VARS відповідно.
Імена змінних МАЛЮНКА АКТИВІЗАЦІЇ. При активізації (запуску) форми можна використовувати малюнок (зображення) замість стандартної кнопки запуску:
<input type=image src="image.gif" name="sub">
Коли користувач натискує кнопку миші де-небудь над таким малюнком, супроводжуюча форма передається на сервер з двома додатковими змінними, sub_x і sub_y. Вони містять координати місця натиснення кнопки миші користувачем усередині даного малюнка. Можна відзначити, що практично, реальні імена змінних, передавані браузером, містять крапку замість символу підкреслення, але PHP конвертує крапку в елемент підкреслення (underscore) автоматично.
Дата добавления: 2016-04-02; просмотров: 815;