Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЕМЕЦ.doc
Скачиваний:
1
Добавлен:
20.09.2019
Размер:
1.3 Mб
Скачать
  1. Вибір програмних ​​засобів реалізації

4.1 Програмні засоби реалізації

Денвер – проект Дмитра Котеровим, набір дистрибутивів (Apache, PHP, MySQL, Perl і т.д.) і програмна оболонка, використовувані Web-розробниками для розробки сайтів на локальній Windows-машині без необхідності виходу в Інтернет. Головна особливість Денвера – зручність при віддаленій роботі відразу над декількома незалежними проектами та можливість розміщення на Flash-накопичувачі.

MySQL Workbench – інструмент для візуального проектування баз даних, що інтегрує проектування, моделювання, створення й експлуатацію БД в єдине безшовне оточення для системи баз даних MySQL.

Можливості програми:

  • дозволяє наочно представити модель бази даних в графічному вигляді;

  • наочний і функціональний механізм установки зв'язків між таблицями, в тому числі «багато до багатьох» із створенням таблиці зв'язків;

  • reverse Engineering – відновлення структури таблиць з вже існуючої на сервері БД (зв'язки відновлюються в InnoDB, при використанні MyISAM – зв'язку необхідно встановлювати вручну);

  • зручний редактор SQL запитів, що дозволяє відразу ж відправляти їх сервером і отримати відповідь у вигляді таблиці;

  • можливість редагування даних у таблиці в візуальному режимі.

4.2 Використання PHP

PHP «Інструменти для створення персональних веб-сторінок» – скриптова мова програмування загального призначення, інтенсивно застосовується для розробки веб-додатків. В даний час підтримується переважною більшістю хостинг-провайдерів і є одним з лідерів серед мов програмування, що застосовуються для створення динамічних веб-сайтів.

Мова і його інтерпретатор розробляються групою ентузіастів в рамках проекту з відкритим кодом. Проект поширюється під власною ліцензією, несумісною з GNU GPL.

В області програмування для Мережі, PHP – один з популярних скриптових мов (разом з JSP, Perl і мовами, використовуваними в ASP.NET) завдяки своїй простоті, швидкості виконання, багатій функціональності, платформ і розповсюдженню початкових кодів на основі ліцензії PHP.

Популярність в області побудови веб-сайтів визначається наявністю великого набору вбудованих засобів для розробки веб-додатків. Основні з них:

  • автоматичне вилучення POST і GET-параметрів, а також змінних оточення веб-сервера в зумовлені масиви;

  • взаємодія з великою кількістю різних систем управління базами даних (MySQL, MySQLi, SQLite, PostgreSQL, Oracle (OCI8), Oracle, Microsoft SQL Server, Sybase, ODBC, mSQL, IBM DB2, Cloudscape і Apache Derby, Informix, Ovrimos SQL, Lotus Notes, DB + +, DBM, dBase, DBX, FrontBase, FilePro, Ingres II, SESAM, Firebird / InterBase, Paradox File Access, MaxDB, Інтерфейс PDO);

  • автоматизована відправка HTTP-заголовків;

  • робота з HTTP-авторизацією;

  • робота з cookies і сесіями;

  • робота з локальними і віддаленими файлами, сокетами;

  • обробка файлів, що завантажуються на сервер;

  • робота з XForms.

В даний час PHP використовується сотнями тисяч розробників. Згідно з рейтингом корпорації TIOBE, що базується на даних пошукових систем, в квітні 2011 року PHP знаходився на 5 місці серед мов програмування. До найбільших сайтів, які використовують PHP, відносяться Facebook, Вконтакте, Wikipedia та ін

Входить в LAMP – поширений набір програмного забезпечення для створення веб-сайтів (Linux, Apache, MySQL, PHP).

Синтаксис PHP подібний синтаксису мови Сі. Деякі елементи, такі як асоціативні масиви і цикл foreach, запозичені з Perl.

Для роботи програми не потрібно описувати будь змінні, використовувані модулі і т. п. Будь-яка програма може починатися безпосередньо з оператора PHP.

Найпростіша програма Hello world на PHP виглядає наступним чином:

<? Php

echo 'Hello, world!';

?>

PHP виконує код, що знаходиться усередині обмежувачів, таких як <? Php?>. Все, що знаходиться поза обмежувачів, виводиться без змін. В основному це використовується для вставки PHP-коду в HTML-документ, наприклад, так:

<html>

<head>

<title> Тестуємо PHP </ title>

</ Head>

<body>

<? Php echo 'Hello, world!';?>

</ Body>

</ Html>

Крім обмежувачів <? Php?>, Допускається використання додаткових варіантів, таких як <? ?> І <script language="php"> </ script>. Крім того, до версії 6.0 допускається використання обмежувачів мови програмування ASP <%%> (конструкції <??> І <%%> можуть бути вимкнені в конфігураційному файлі php.ini).

Імена змінних починаються з символу $, тип змінної оголошувати не потрібно. Імена змінних, функцій і класів чутливі до регістру. Константи також чутливі до регістру. Змінні обробляються в рядках, укладених в апострофи або подвійні лапки, і heredoc-рядках (рядках, створених за допомогою оператора <<<).

PHP розглядає перехід на новий рядок як пробіл, так само як HTML та інші мови з вільним форматом. Інструкції поділяються за допомогою крапки з комою (;), за винятком деяких випадків, після оголошення конструкції if / else і циклів.

PHP підтримує три типи коментарів: в стилі мови Сі (обмежені / ** /), C + + (починаються з / / і йдуть до кінця рядка) і оболонки UNIX (з # до кінця рядка).

4.2.1 Типи даних

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

До скалярним типів даних відносяться:

– цілий тип (integer);

– речовинний тип даних (float, double);

– логічний тип (boolean);

– рядковий тип (string);

– спеціальний тип NULL.

До нескалярним типів відносяться:

– ресурс (resource);

– иасив (array);

– об'єкт (object).

До псевдотіпам відносяться:

– Mixed один або кілька необов'язкових параметрів;

– Number число (integer або float);

– Callback (string або анонімна функція));

– Void відсутність параметрів.

Діапазон цілих чисел (integer) в PHP залежить від платформи (зазвичай, це діапазон 32-бітових знакових цілих чисел, тобто, від -2147483648 до 2147483647). Числа можна задавати в десятковій, вісімковій і шістнадцятковій системах числення. Діапазон дійсних чисел (double), також, залежить від платформи (для 32-бітної архітектури діапазон дозволяє оперувати числами від ± 1.7 × 10-308 до ± 1.7 × 10 +308).

PHP надає розробникам логічний тип (boolean), здатний приймати тільки два значення TRUE («істина») і FALSE («брехня»). При перетворенні в логічний тип число 0, порожній рядок, нуль в рядку «0», NULL і порожній масив вважаються рівними FALSE. Всі інші значення автоматично перетворюються в TRUE.

Спеціальний тип NULL призначений для змінних без певного значення. Єдиним значенням даного типу є константа NULL. Тип NULL приймають неініціалізовані змінні, змінні початкові константою NULL, а також змінні, віддалені за допомогою конструкції unset ().

Посилання на зовнішні ресурси мають тип «ресурс» (resource). Змінні даного типу, як правило, є дескриптор, що дозволяє управляти зовнішніми об'єктами, такими як файли, динамічні зображення, результуючі таблиці бази даних і т. п.

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

Покажчик на функцію в PHP може бути представлений замиканням або псевдотіпом callback. Замикання доступно з версії 5.3 і в коді виглядає як просте визначення функції, в яку явно можна тягнути значення з контексту, наприклад:

function ($ args .. $ argsN) use ($ ctxVar, $ ctxVar1) {definition;}

callback тип може бути представлений:

  • рядком (інтерпретується як назва функції);

  • масивом де нульовий і перший елемент рядка (інтерпретується як назва статичної функції в класі);

  • масивом де нульовий елемент об'єкт, а перший рядок (інтерпретується як метод в об'єкта).

Для перевірки чи є значення викликуваним слід використовувати is_callable ($ var).

4.2.2 Звернення до змінних і функцій

Звернення до змінних здійснюється за допомогою символу $, за яким слідує ім'я змінної. Дана конструкція може бути застосована також для створення динамічних змінних та функцій. Наприклад:

$ A = 'I am a'; / / Запис значення в змінну $ a

echo $ a; / / Вивід змінної $ а

$ B = 'a';

echo $ $ b; / / Вивід змінної $ а (додатковий $ перед змінної $ b)

echo $ {'a'}; / / Вивід змінної $ a

function_name (); / / Виклик функції function_name

$ C = 'function_name';

$ C (); / / Виклик функції function_name,

$ D = 'Class_name';

$ Obj = new Class_name; / / Створення об'єкта класу Class_name

$ Obj = new $ d (); / / Створення об'єкта класу Class_name

$ Obj-> b; / / Звернення до поля b об'єкта

$ Obj-> c (); / / Виклик методу c () об'єкта

$ Obj-> $ b; / / Звернення до поля a об'єкта, так як $ b = 'a'

$ Obj-> $ c (); / / Виклик методу function_name () об'єкта, так як $ c = 'function_name'

В PHP echo і print не є функціями (хоча print має значення, що повертається), а є синтаксичними одиницями. При їх використанні можна опустити дужки.

4.2.3 Суперглобальні масиви

Суперглобальними масивами в PHP називаються зумовлені масиви, що мають глобальну область видимості без використання директиви global. Велика частина цих масивів містить вхідні дані запиту користувача (параметри GET-запиту, поля форм при посилці методом POST, куки і т. п.).

Всі суперглобальні масиви, крім $ GLOBALS і $ _REQUEST, мають застарілі аналоги з довгими іменами, які доступні аж до п'ятої версії PHP (в шостій версії планується їх виключення). Таким чином, звернення $ _GET ['year'] і $ HTTP_GET_VARS ['year'] ідентичні (за винятком області видимості: масиви з «довгими» іменами не є суперглобальними).

$ GLOBALS – Масив всіх глобальних змінних (у тому числі і для користувача).

$ _SERVER – (Застарілий аналог - $ HTTP_SERVER_VARS) Містить змінні оточення, які операційна система передає серверу.

$ _ENV (Вуст. $ HTTP_ENV_VARS) – Поточні змінні середовища (англ. Environment variables). Їх набір специфічний для платформи, на якій виконується скрипт.

$ _GET (Вуст. $ HTTP_GET_VARS) – Містить параметри GET-запиту, передані в URI після знака питання «?».

$ _POST (Вуст. $ HTTP_POST_VARS) – Асоціативний масив значень полів HTML-форми при відправці методом POST. Індекси елементів відповідають значенням атрибута name елементів управління HTML-форми.

$ _FILES (Вуст. $ HTTP_POST_FILES) – Асоціативний масив з відомостями про надіслані методом POST файлах. Кожен елемент має індекс, ідентичний значенню атрибута «name» у формі, і, в свою чергу, також є масивом з наступними елементами:

  • ['Name'] – вихідне ім'я файлу на комп'ютері користувача;

  • ['Type'] – зазначений агентом користувача MIME-тип файлу. PHP не перевіряє його, і тому немає ніяких гарантій, що зазначений тип відповідає дійсності;

  • ['Size'] – розмір файлу в байтах;

  • ['Tmp_name'] – повний шлях до файлу в тимчасовій папці. Файл необхідно перемістити звідти функцією move_uploaded_file. Завантажені файли з тимчасової папки PHP видаляє самостійно;

  • ['Error'] – код помилки. Якщо файл вдало завантажився, то цей елемент буде дорівнює 0 (UPLOAD_ERR_OK).

$ _COOKIE (Вуст. $ HTTP_COOKIE_VARS) - Асоціативний масив з переданими агентом користувача значеннями куки.

$ _REQUEST - Містить елементи з масивів $ _GET, $ _POST, $ _COOKIE. З версії PHP 4.1 включає $ _FILES.

$ _SESSION (Вуст. $ HTTP_SESSION_VARS) - Містить дані сесії.

4.2.4 Об'єктно-орієнтоване програмування

PHP підтримує широкі об'єктно-орієнтовані можливості, повна підтримка яких була введена в п'ятій версії мови.

Клас в PHP оголошується за допомогою ключового слова class. Методи і поля класу можуть бути загальнодоступними (public, за замовчуванням), захищеними (protected) і прихованими (private). PHP підтримує всі три основних механізми ООП – інкапсуляцію, поліморфізм і успадкування (батьківський клас вказується за допомогою ключового слова extends після імені класу). Підтримуються інтерфейси (ставляться у відповідність з допомогою implements). Дозволяється оголошення фінальних, абстрактних методів і класів. Множинне успадкування класів не підтримується, проте клас може реалізовувати декілька інтерфейсів. Для звернення до методів батьківського класу використовується ключове слово parent.

Класи в PHP мають ряд спеціальних методів, що починаються з двох символів підкреслення. Особливо варто відзначити конструктор (__construct (), у версіях до 5.0 конструктором служив метод, однойменний з класом) і деструктор (__destruct ()), а також методи читання (__get ()) та записи (__set ()), згортання (__sleep ( )) і розгортання (__wake ()), клонування (__clone ()) та ін Ці методи є досить гнучким інструментом: перевизначаючи їх, можна домогтися істотної зміни поведінки об'єкта.

Екземпляри класу створюються за допомогою ключового слова new, звернення до полів і методів об'єкта проводиться з використанням оператора ->. Для доступу до членів класу з його методів використовується змінна $ this:

class C1 extends C2 implements I1, I2

{

private $ a;

protected $ b;

function __ construct ($ a, $ b)

{

parent :: __construct ($ a, $ b);

$ This-> a = $ a;

$ This-> b = $ b;

}

public function plus ()

{

return $ this-> a + $ this-> b;

}

/ * ............... * /

}

$ D = new C1 (1, 2);

echo $ d-> plus (); / / 3

Починаючи з п'ятої версії PHP, об'єкти передаються за посиланням:

class a

{

public $ color = 'red';

}

$ A = new a ();

echo $ a -> color; / / red

$ B = $ a;

$ B -> color = 'blue';

echo $ a -> color; / / blue

«Paamayim Nekudotayim» або просто «подвійне двокрапка». Використовуючи цю лексему, програміст може звертатися до констант, статичним або перевантаженим властивостями або методам класу. При зверненні до цих елементів ззовні класу, програміст повинен використовувати ім'я цього класу. «Paamayim Nekudotayim» на перший погляд може здатися дивним словосполученням для позначення подвійного двокрапки. Однак, під час створення Zend Engine версії 0.5 (який входив до PHP3), Andi і Zeev вибрали саме це позначення. «Paamayim Nekudotayim» справді означає «подвійне двокрапка» на івриті. Це позначення не змінювалося жодного разу протягом усього часу розробки PHP.

<? Php

class MyClass {

const CONST_VALUE = 'Значення константи';

}

/ / Використання :: поза оголошення класу

echo MyClass :: CONST_VALUE;?>

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

PHP-скрипти зазвичай обробляються інтерпретатором в порядку, що забезпечує кроссплатформенность розробленого програми:

1) лексичний аналіз вихідного коду і генерація лексем,

2) синтаксичний аналіз отриманих лексем,

3) генерація байт-коду,

4) виконання байт-коду інтерпретатором (без створення виконуваного файлу).

Для збільшення швидкодії додатків, можливо, використання спеціального програмного забезпечення, так званих акселераторів. Принцип їх роботи полягає в кешуванні одного разу згенерованого байт-коду в пам'яті і / або на диску, таким чином, з процесу роботи програми виключаються етапи 1-3, що в загальному випадку веде до значного прискорення роботи. Найбільша ефективність акселератора досягається на скриптах з великою кількістю вихідного коду, що містять невелику кількість операцій, ресурсоємних при виконанні, навіть, ліченого кількості разів (наприклад таких, як масштабування зображень).

Важливою особливістю є те, що розробнику немає необхідності піклуватися про розподіл і звільнення пам'яті. Ядро PHP реалізує засоби для автоматичного керування пам'яттю; вся виділена пам'ять повертається системі після завершення роботи скрипта.

4.2.6 Розширення

Інтерпретатор складається з ядра і модулів, «розширень», що представляють собою динамічні бібліотеки. Розширення дозволяють доповнити базові можливості мови, надаючи можливості для роботи з базами даних, сокетами, динамічною графікою, криптографічними бібліотеками, документами формату PDF і тому подібним. Будь-який бажаючий може розробити своє власне розширення і підключити його. Існує величезна кількість розширень, як стандартних, так і створених сторонніми компаніями і ентузіастами, проте в стандартну поставку входить лише декілька десятків добре зарекомендували себе. Безліч розширень доступно в репозиторії PECL.

4.2.7 Параметри настройки

Інтерпретатор PHP має спеціальний конфігураційний файл – php.ini, що містить безліч налаштувань, зміна яких впливає на поведінку інтерпретатора. Є можливість відключити використання ряду функцій, змінити обмеження на використовувану скриптом оперативну пам'ять, час виконання, обсяг завантаження, налаштувати журнал помилок, роботу з сесіями і поштовими сервісами, підключити додаткові розширення, а також багато іншого.

4.2.8 Режими інтерпретатора

Існує кілька способів використання інтерпретатора PHP.

1. Як модуля до веб-серверу за допомогою SAPI або ISAPI (наприклад, для Apache модуль mod_php). Веб-сервер запускається з завантаженим модулем і при зверненні до php-скрипту він виконується в оточенні процесу веб-сервера. Це найбільш поширений метод використання PHP в силу наступних причин:

– він найбільш зручний для налагодження, так як помилки PHP виводяться на екран (якщо даний режим включений в настройках), тоді як в режимі CGI помилка призводить до генерації HTTP-коду 500 та додаткову інформацію необхідно шукати в логах веб-сервера;

– е можливість змінювати деякі настройки PHP «на льоту» за допомогою файлу. Htaccess, без перезавантаження веб-сервера;

– в режимі CGI немає можливості скористатися HTTP-аутентифікацією;

– володіє більш високою швидкістю роботи.

2. Як CGI. В цьому випадку, при виклику скрипта веб-сервер викликає / usr / bin / php-cgi / path / to / script.php. При цьому створюється новий процес і скрипт виконується в оточенні php-cgi, яке, в залежності від налаштувань, може сильно відрізнятися від оточення процесу веб-сервера. Більш сучасним варіантом є FastCGI. Незважаючи на те, що препроцесор PHP все одно буде перезапускати при кожному запиті, перевагою даного варіанту перед попереднім є більш високий ступінь безпеки, тому як PHP працює як окремий додаток зі своїми правами.

3. Як скрипта командного рядка, що є виконуваним файлом, який викликається користувачем з командного рядка; скрипт виконується в оточенні викликав користувача. У цьому випадку можливе використання PHP для створення клієнтських GUI-додатків і вирішення адміністративних завдань в операційних системах UNIX, Linux, Microsoft Windows, Mac OS X і AmigaOS. Однак, в такій якості він не набув поширення, віддаючи пальму першості Perl, Python і VBScrip

4.4 СУБД MySQL

SQL – це скорочення від Structured Query Language (структурований мову запитів). SQL створений для роботи з реляційними базами даних. Він дозволяє користувачам взаємодіяти з базами даних (переглядати, шукати, додавати і управляти даними). MySQL відповідає специфікації ANSI 92 SQL. MySQL є власністю компанії Sun Microsystems, що здійснює розробку і підтримку програми. Розповсюджується під GNU General Public License і під власною комерційною ліцензією, на вибір. Крім цього розробники створюють функціональність за замовленням ліцензійних користувачів, саме завдяки такому замовленню майже в найраніших версіях з'явився механізм реплікації.

Основні позитивні сторони MySQL:

  • багато поточність, підтримка декількох одночасних запитів;

  • оптимізація зв'язків з приєднанням багатьох даних за один прохід;

  • записи фіксованої і змінної довжини;

  • ODBC драйвер в комплекті з ісходником;

  • гнучка система привілеїв і паролів;

  • до 16 ключів в таблиці. Кожен ключ може мати до 15 полів;

  • підтримка ключових полів і спеціальних полів в операторі;

  • підтримка чисел довжиною від 1 до 4 байт (ints, float, double, fixed), рядків змінної довжини і міток часу;

  • інтерфейс з мовами C і perl;

  • заснована на потоках, швидка система пам'яті;

  • утиліта перевірки і ремонту таблиці (isamchk) ;

  • всі дані зберігаються у форматі ISO8859_1;

  • всі операції роботи з рядками не звертають уваги на регістр символів в оброблюваних рядках;

  • псевдоніми застосовні як до таблиць, так і до окремих колонкам в таблиці;

  • всі поля мають значення за замовчуванням. можна використовувати на будь-якому підмножині полів;

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