У PHP 5 також включені два нові модулі
для роботи з протоколами - SimpleXML
і SOAP. SimpleXML дозволяє значно спростити
роботу з XML-даними, представляючи вміст
XML-документа у вигляді PHP-об'єкту.
Розширення SOAP дозволяє будувати на PHP
сценарії, що обмінюються інформацією
з іншими додатками за допомогою XML-повідомлень
поверх існуючих веб-протоколів, наприклад
HTTP. Модуль для роботи з SOAP для PHP 5 надає
розробникам засіб для достатньо швидкого
створення ефективних SOAP-клієнтів і SOAP-серверів.
Новий модуль PHP 5 MySQLi (MySQL Improved) призначений
для роботи з MySQL-сервером версій 4.1.2
і вище, реалізовуючи не тільки процедурний,
але і об'єктно-орієнтований інтерфейс
до MySQL. Додаткові можливості цього модуля
включають — SSL, контроль транзакцій, підтримка
реплікації і ін. Очевидно, що, на цьому
історія PHP не закінчується. Слід очікувати
наступних версій мови із розширеними
можливостями.
Базовий синтаксис
Відокремлення PHP коду від HTML розмітки
Всі сценарії оформляються у вигляді
блоків коду. Ці блоки можуть бути поміщенні
в HTML-код, але відділені від нього
відповідними обмежувачами. Код PHP в HTML
повинен знаходитись між початковим
тегом
<?php та кінцевим ?> (або
між <script language="php"> та </script>)
Бажаним варіантом виділення PHP коду
є варіант <?php ?>, оскільки саме такі
початковий та кінцевий теги дозволять
використовувати PHP код в документах,
які відповідають правилам XML. Також
можна користуватися скороченим
записом: <? ?> (в php.ini змінна short_open_tag
повинна мати значення On) і записом в стилі
ASP: <% %> (в php.ini змінна asp_tags повинна
мати значення On). Проте стиль ASP не рекомендується
і очікується, що він буде відсутній у
PHP6.
Відокремлення
інструкцій
Інструкції в PHP відокремлюються символом
;. Перед закінченням скрипту (перед тегом
?>) крапку з комою ставити необов'язково.
Коментарі
Коментарі в PHP можуть бути
як однорядкові так і багаторядкові.
Однорядкові коментарі починаються
із // або # . Багаторядкові коментарі починаються символами
/* і закінчуються */ . Слід зауважити, що
однорядкові коментарі йдуть або до кінця
текучого рядка або до закриваючого тега
?>
Змінні
Основою будь-якого програмування
є змінні. Існує три стилі оформлення
змінних у PHP:
- Короткий стиль: $variable Використовується в більшості випадків. Змінна, яка створюється програмним кодом, записується таким чином. Можливо також використання такого стилю для добування змінної із ФОРМИ, якщо ввімкнено register_globals у файлі конфігурації php.ini.
- Середній стиль: $_POST['varaible'], $_GET['variable']', $_REQUEST['variable'] Використовується для отримання даних з полей ФОРМИ. В залежності від типу передачі даних, встановлюється POST або GET або REQUEST для обох випадків.
- Довгий стиль:
$HTTP_POST_VARS['variable'],$HTTP_GET_VARS['variable'] Найбільш повний стиль запису, найменш
використаний. У майбутньому буде вважатись
застарілим, отже, небажаний.
Змінні, які обумовлюються
користувачем, записуються у вигляді:
$variable = 0.00;, $variable1 = 'hello PHP-Master!' [19,21,24-26].
4.2 MySQL
MySQL — вільна система управління базами
даних (СУБД). MySQL є власністю компанії
Sun Microsystems, здійснюючу розробку й підтримку
додатка. Поширюється під GNU General Public License
і під власною комерційною ліцензією,
на вибір. Крім цього компанія MySQL AB розробляє
функціональність за замовленням ліцензійних
користувачів, саме завдяки такому замовленню
майже в самих ранніх версіях з'явився
механізм реплікацій [19,21].
MySQL є рішенням для
малих і середніх додатків. Входить
в LAMP. Звичайно MySQL використовується як
сервер, до якого звертаються локальні
або вилучені клієнти, однак у дистрибутив
входить бібліотека внутрішнього сервера,
що дозволяє включати MySQL в автономні програми.
Гнучкість СУБД MySQL забезпечується підтримкою
великої кількості типів таблиць:
користувачі можуть вибрати як таблиці
типу MyISAM, підтримуючий повнотекстовий
пошук, так і таблиці InnoDB, підтримуючі
транзакції на рівні окремих записів.
Більше того, СУБД MySQL поставляється зі
спеціальним типом таблиць EXAMPLE, що демонструють
принципи створення нових типів таблиць.
Завдяки відкритій архітектурі й GPL-Ліцензуванню,
у СУБД MySQL постійно з'являються нові типи
таблиць.
26 лютого 2008 року Sun Microsystems придбала
MySQL AB за $1 млрд.
Про походження MySQL
MySQL виникла як спроба
застосувати mSQL до власних розробок компанії: таблицям,
для яких використовувалися ISAM — підпрограми
низького рівня. У результаті був вироблений
новий SQL-SQL-інтерфейс, але API-API-інтерфейс
залишився в спадщину від mSQL. Звідки відбувається
назва «MySQL» — доподлинно не відомо. Розроблювачі
дають два варіанти: або тому, що практично
всі наробітки компанії починалися із
префікса My, або на честь дівчинки по ім'ю
My, дочки Майкла Монти Віденіуса, одного
з розроблювачів системи.
Ліцензування
MySQL має подвійне ліцензування.
MySQL може поширюватися відповідно
до умов ліцензії GPL. Але за умовами GPL, якщо будь-яка програма
вимагає MySQL, те вона теж повинна поширюватися
по ліцензії GPL[6].Однак це може розходитися із планами
розроблювачів, що не бажають відкривати
вихідні тексти своїх програм. Для таких
випадків передбачена комерційна ліцензія
компанії MySQL AB, яка також забезпечує якісну
сервісну підтримку.
Платформи
MySQL портирована на
велику кількість платформ: AIX, BSDi, FreeBSD, HP-UX, GNU/Linux, Mac OS X, NetBSD, OpenBSD, OS/2
Warp, SGI IRIX, Solaris, SunOS, SCO OpenServer, SCO UnixWare, Tru64,
Windows 95, Window 98, Windows NT, Windows 2000, Windows XP, Windows
Server 2003 і Window Vista. Існує також порт MySQL до
OpenVMS. Важливо відзначити, що компанія
MySQL AB надає для вільного завантаження
не тільки вихідні коди СУБД, але й відкомпільовані
й оптимізовані під конкретні операційні
системи готові виконуватися модулі, що,
які можна завантажити із дзеркал, представлених
на офіційному сайті.
Мови програмування
MySQL має API для мов C, C++, Эйфель, Java, Лисп, Perl, PHP,
Python, Ruby, Smalltalk і Tcl, бібліотеки для мов платформи
.NET, а також забезпечує підтримку для ODBC
за допомогою ODBC-Драйвера MyODBC.
Застаріла версія
Незважаючи на те, що версія
4.0 є застарілої, вона усе ще має
значне поширення. Основні можливості
цієї версії:
- Практично повна реалізація ANSI SQL-99, плюс розширення;
- Міжплатформна сумісність;
- Незалежні механізми зберігання (MyISAM для швидкого читання, InnoDB для транзакцій і посилальної цілісності);
- Транзакції;
- Підтримка SSL;
- Кешировання запитів;
- Реплікація: один головний сервер на один підлеглого, багато підлеглих на один головного;
- Повнотекстова індексація й пошук з використанням механізму MyISAM;
- Впроваджена бібліотека бази даних;
- Підтримка Юнікода (UTF-8);
- Таблиці InnoDB забезпечують відповідність вимогам ACID;
- Убудований сервер, що дозволяє включати MySQL в автономні додатки.
MySQL4.1
Рекомендованою версією
на 2005 год є MySQL 4.1 вийшла 27 жовтня 2004, Вона
містить наступні нововведення:
- Вкладені запити й похідні таблиці;
- Нова система кодувань і сортувань;
- Більше швидкий і гнучкий протокол клієнт-сервер з підтримкою підготовлених запитів, що забезпечує їхнє оптимальне виконання;
- Нова програма установки й настроювання для Microsoft Windows і GNU/Linux;
- Захищені через OpenSSL з'єднання клієнт-сервер;
- Високо-оптимізована бібліотека, що може бути використана в сторонніх програмах;
- Повноцінна підтримка Юнікода ( UTF-8 і UCS2);
- Стандартні просторові типи даних GIS, для зберігання географічної інформації;
- Поліпшений повнотекстовий пошук і система допомоги.
MySQL5.0
В MySQL 5.0 значно розширена
функціональність, що ставить MySQL в один ряд з комерційними СУБД. Якщо
раніше СУБД MySQL обвинувачували в недостатній
підтримці стандарту SQL, те з появою п'ятої
версії цієї популярної бази даних, з'явилася
практично повна підтримка стандарту
SQL. MySQL 5.0 містить наступні нововведення:
- збережені процедури і функції;
- оброблювачі помилок;
- курсори;
- тригери;
- представлення;
- інформаційна схема (так званий системний словник).
MySQL5.1
Версія MySQL 5.1 продовжує
шлях до стандарту SQL2003. MySQL 5.1 містить
наступні нововведення:
- планувальник завдань;
- сегментування;
- змінено поводження ряду операторів, для забезпечення більшої сумісності зі стандартом SQL2003;
- значні зміни в роботі MySQL Cluster, такі, як, наприклад, можливість зберігання табличних даних на диску;
- row-based реплікація;
- реалізація парсера повнотекстового пошуку у вигляді plug-in.
MySQL6.0
Версія MySQL 6.0 поки перебуває
в стадії альфа-тестування. Спочатку
було ухвалене рішення про створення
версії 5.2, однак незабаром ця версія
була перейменована в 6.0.
Одне з найголовніших нововведень
версії 6.0 — новий механізм зберігання
даних Falcon, розроблений компанією MySQL AB,
як потенційна заміна для InnoDB компанії
InnoBase, придбаною компанією Oracle. Повний
список змін можна побачити на офіційному
сайті.
Локалізація
Починаючи з версії 4.1 у СУБД MySQL впроваджено нову систему
кодувань і сортувань. Якщо ви використовуєте
кодування cp1251, перед виконанням SQL-Інструкцій
необхідно настроїти кодування з'єднання
за допомогою операторів:
SET character_set_client='cp1251';
SET character_set_results='cp1251';
SET character_set_connection='cp1251';
Ці три оператори
еквівалентні виклику одного оператора:
SET NAMES 'cp1251'
Змінна character_set_client установлює
кодування даних відправляються
від клієнта, змінна character_set_results установлює
кодування даних змінна character відправляються,
що клієнтові,,_set_connection установлює кодування,
у яку перетвориться інформація яка прийшла
від клієнта, перед виконанням запиту
на сервері.
При використанні Юнікода
UTF-8 цей оператор виглядає в такий
спосіб:
SET NAMES 'utf8'
Основні
можливості MySQL
Нижче представлений
список найбільш важливих характеристик
програмного забезпечення баз даних
MySQL.
- Внутрішні характеристики.
- Написаний на мовах С и C++.
- Протестований на широкому спектрі різних компіляторів.
- Працює на безлічі різних платформ.
- Доступні API-Інтерфейси для З, C++, Eiffel, Java, Perl, PHP, Python, Ruby і Tel.
- Повністю багато поточний з використанням потоків ядра. Може працювати в багатопроцесорних системах.
- Забезпечує транзакцію і не транзакцію механізми зберігання.
- Використовує дуже швидкі дискові таблиці (MylSAM) зі стиском індексів на основі бінарних дерев ( В-Дерев).
- Порівняно просте додавання іншого механізму зберігання. Це зручно, якщо потрібно додати SQL-Інтерфейс до бази даних власної розробки.
- Дуже швидка система розподілу пам'яті, заснована на потоках.
- Дуже швидкі з'єднання, що використовують оптимізовані однопрохідні мульти-з’єднання.
- Збережені в пам'яті хеш-таблиці, які використовуються як тимчасові таблиці.
- Функції SQL реалізовані з використанням високо оптимізованої бібліотеки класів і повинні виконуватися гранично швидко. Як правило, будь-якого розподілу пам'яті після ініціалізації запиту не виконується.
- Код MySQL протестованний за допомогою інструментів пошуку витоку пам'яті, як комерційних, так і з відкритим вихідним кодом.
- Сервер доступний як окрема програма для використання в клієнт-
серверній мережному середовищу. Крім того, він також поставляється у вигляді бібліотеки, що може бути убудована в окремі автономні додатки. Такі додатки можуть застосовуватися в ізольованому середовищі або середовищі, що не має доступ до мережі.
- Типи стовпців
- Безліч типів даних для стовпців таблиць: знакові/беззнакові цілі
довжиною в 1, 2, 3, 4 і 8 байт; типи FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET, ENUM і просторові типи OpenGIS.
- Запису фіксованої й змінної довжини.
- Оператори й функції.
- Повна підтримка операцій і функцій у конструкціях SELECT і WHERE запитів, наприклад: mysql> SELECT CONCAT(first_name, ' ', last_name) -> FROM citizen -> WHERE income/dependents > 10000
AND age > 30;
- Повна підтримка конструкцій GROUP BY і ORDER BY. Підтримка групових функцій (COUNT (), COUNT (DISTINCT . . .), AVG(), STD(), SUM(), MAX(),
MIN() І GROUP_CONCAT()).
- Підтримка LEFT OUTER JOIN і RIGHT OUTER JOIN як із синтаксисом SQL, так і із синтаксисом ODBC.
- Підтримка псевдонімів для таблиць і стовпців, як того вимагає стандарт SQL.
- Оператори DELETE, insert, REPLACE і UPDATE повертають кількість рядків, які були змінені. Замість цього можна задати повернення кількості рядків, що відповідають запиту, для чого буде потрібно встановити відповідний прапор при підключенні до сервера.
- Специфічна для MySQL команда SHOW може бути використана для добування інформації про бази даних, таблицях і індексах. Команда
EXPLAIN дозволяє переглянути, як оптимізатор виконує запит.
- Імена функцій не конфліктують з іменами таблиць і стовпців. Наприклад, ABS — абсолютно коректне ім'я стовпця. Єдине обмеження, що накладається на виклик функцій, - це те, що між ім'ям функції й наступної за ним відкриваючою дужкою ' (' не повинне бути пробілів.
- Можна змішувати таблиці з різних баз даних в одному запиті (як в MySQL 3.22).
- Безпека.
- Система, заснована на паролях і привілеях, є винятково гнучкою і безпечною й дозволяє організувати верифікацію засобами хоста. Паролі захищені, оскільки весь трафік паролів під час з'єднання із сервером шифрується.
- Масштабованість і обмеження.
- Підтримує роботу баз даних величезних обсягів. Наприклад, компанія
MySQL AB застосовує сервер MySQL для обслуговування бази даних, утримуючих 50 мільйонів записів. Відома також організація, що використовує сервер MySQL для обслуговування бази даних з 60 000 таблиць, що зберігає близько 5 мільярдів записів.
- Дозволяється мати до 64 індексів на таблицю (у версіях, що передують MySQL 4.1.2, допускалося до 32 індексів). Кожний індекс може містити від 1 до 16 стовпців або частин стовпців. Максимальна ширина індексу становить 1000 байт (500 байт у версіях, що передують MySQL 4.1.2). Для індексу може застосовуватися префікс стовпців з типами CHAR, VARCHAR, BLOB і TEXT.
- Мережна зв’язність
- Клієнти можуть підключатися до сервера MySQL, використовуючи сокети TCP/IP на будь-якій платформі. В Windows-Системах сімейства NT (NT, 2000 або ХР) клієнти можуть підключатися з використанням іменованих каналів. У системах на базі UNIX клієнти можуть підключатися через файли сокетів UNIX-Доменів.
- Інтерфейс Connector/ODBC дозволяє MySQL підтримувати клієнтські програми, які використовують ODBC-З'єднання. Наприклад, для підключення до сервера MySQL можна використовувати MS Access. Клієнтське програмне забезпечення може виконуватися під керуванням Windows або UNIX. Вихідні тексти інтерфейсу Connector/ODBC доступні. Підтримуються всі функції ODBC 2.5, так само як і безліч інших.
- Інтерфейс Connector/JDBC дозволяє MySQL взаємодіяти із клієнтськими програмами на Java, у яких використовуються JDBC-Підключення. Клієнтське програмне забезпечення може виконуватися під керуванням Windows або UNIX. Вихідні тексти інтерфейсу Connector/JDBC доступні.
- Локалізація
- Сервер може видавати клієнтам повідомлення про помилки на різних мовах.
- Повністю підтримуються кілька кодових таблиць, включаючи latinl (ISO- 8859- 1), german, big5, ujis і інші. Наприклад, в іменах таблиць і стовпців дозволяється застосовувати скандинавські символи на зразок 'а', 'а' і 'б'. Починаючи з версії MySQL 4.1, також забезпечується підтримка Unicode.
- Всі дані зберігаються в обраному кодуванні. Всі порівняння стовпців з нормальними рядками чутливі до регістра.
- Сортування виконується відповідно до обраного кодування (за замовчуванням використовуються шведський набір). Під час запуску сервера MySQL це можна змінити. Як приклад досить зробленого сортування рекомендується звернути увагу на код сортування для чеської мови. Сервер MySQL підтримує безліч різних кодувань, причому вони можуть бути зазначені як під час компіляції, так і під час виконання.
- Клієнти й інструменти.
- Сервер MySQL має убудовану підтримку SQL-Операторів для перевірки, оптимізації й відновлення таблиць. Ці оператори можна виконувати в режимі командного рядка, використовуючи клієнтський додаток mysqlcheck. MySQL включає також myisamchk - дуже швидку утиліту командного рядка для реалізації тих же операцій над таблицями MylSAM.
- Всі програми MySQL можна запускати на виконання з опцією -help або -? для одержання швидкої підказки.