Знайомство з PHP (призначення, включення в документ, обробка, базові налаштування)

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

Знайомство з PHP

PHP (англ. PHP: Hypertext Preprocessor - «PHP: препроцесор гіпертексту», англ. Personal Home Page Tools (застар.) - «Інструменти для створення персональних веб-сторінок») - скриптова мова програмування загального призначення, інтенсивно застосовується для розробки веб-додатків. В даний час підтримується переважною більшістю хостинг-провайдерів і є одним з лідерів серед мов програмування, що застосовуються для створення динамічних веб-сайтів. Мова і його інтерпретатор розробляються групою ентузіастів в рамках проекту з відкритим кодом. Проект поширюється під власною ліцензією, несумісною з GNU GPL.

PHP інтерпретується веб-сервером в HTML-код, який передається на сторону клієнта. На відміну від таких скриптових мов програмування, як JavaScript, користувач не має доступу до PHP-коду, що є перевагою з точки зору безпеки але значно погіршує інтерактивність сторінок. Але ніщо не забороняє використовувати РНР для генерування і JavaScript-кодів які виконаються вже на стороні клієнта.

PHP - мова, яка може бути вбудованою безпосередньо в html-код сторінок, які, в свою чергу коректно будуть оброблені PHP -інтерпретатором. Механізм РНР просто починає виконувати код після першої екрануючої послідовності (<?) і продовжує виконання до того моменту, коли він зустріне парну екрануючу послідовність (?>).

PHP — мова, яка може бути вбудована безпосередньо в html-код сторінок, які, в свою чергу коректно будуть оброблені PHP -інтерпретатором. Механізм РНР просто починає виконувати код після першої екрануючої послідовності (<?) і продовжує виконання до того моменту, коли він зустріне парну екрануючу послідовність (?>).

Велика різноманітність функцій PHP дають можливість уникнути написання багаторядкових призначених для користувача функцій на C або Pascal.

  • Наявність інтерфейсів до багатьох баз даних
  • в PHP вбудовані бібліотеки для роботи з MySQL, PostgreSQL, mSQL, Oracle, dbm, Hyperware, Informix, InterBase, Sybase.
  • через стандарт відкритого інтерфейсу зв'язку з базами даних (Open Database Connectivity Standard — ODBC) можна підключатися до всіх баз даних, до яких існує драйвер.
  • Традиційність

Мова РНР здаватиметься знайомою програмістам, що працюють в різних областях. Багато конструкцій мови запозичені з С, Perl. Код РНР дуже схожий на той, який зустрічається в типових програмах на С або Pascal. Це помітно знижує початкові зусилля при вивченні РНР. PHP — мова, що поєднує переваги Perl і С і спеціально спрямована на роботу в Інтернеті, мова з універсальним і зрозумілим синтаксисом. І хоча PHP є досить молодою мовою, вона здобула таку популярність серед web-програмістів, що в наш час є мало не найпопулярнішою мовою для створення веб-застосунків (скриптів).

  • Наявність вихідного коду та безкоштовність

Стратегія Open Source, і розповсюдження початкових текстів програм в масах, безсумнівно справили благотворний вплив на багато проектів, в першу чергу — Linux хоч і успіх проекту Apache сильно підкріпив позиції прихильників Open Source. Сказане відноситься і до історії створення РНР, оскільки підтримка користувачів зі всього світу виявилася дуже важливим чинником в розвитку проекту РНР. Ухвалення стратегії Open Source і безплатне розповсюдження початкових текстів РНР надало неоціниму послугу користувачам. Додатково, користувачі РНР в усьому світі є свого роду колективною службою підтримки, і в популярних електронних конференціях можна знайти відповіді навіть на найскладніші питання.

  • Ефективність

Ефективність є дуже важливим чинником при програмуванні для середовищ розрахованих на багато користувачів, до яких належить і web. Важливою перевагою PHP є те, що ця мова належить до інтерпретованих. Це дозволяє обробляти сценарії з достатньо високою швидкістю. За деякими оцінками, більшість PHP-сценаріїв (особливо не дуже великих розмірів) обробляються швидше за аналогічні їм програми, написані на Perl. Проте, щоб не робили розробники PHP, виконувані файли, отримані за допомогою компіляції, працюватимуть значно швидше — в десятки, а іноді і в сотні разів. Але продуктивність PHP цілком достатня для створення цілком серйозних веб-застосунків.

Перші версії

Історія PHP починається з 1995 року, коли Расмус Лердорф (англ. Rasmus Lerdorf) створив простий застосунок мовою Perl, що аналізував відвідування користувачами його резюме на веб-сайті. Потім, коли цим застосунком вже користувалися кілька чоловік, а число охочих одержати його постійно збільшувалося, Лердорф назвав своє творіння Особисті інструменти домашньої сторінки англ. Personal Home Page Tools версія 1 і виставив для вільного завантаження. З цієї миті почався небувалий зліт популярності PHP.

Як це завжди буває, терміново було потрібне доопрацювання і нові доповнення. Для їхньої реалізації Расмус створює нову версію пакету, тепер уже написану на С. Отриманий таким чином інструмент набуває робочої назви PHP/FI Персональна Домашня сторінка / Інтерпретатор Форм (англ. Personal Home Page / Forms Interpreter — ), надалі він також буде відомий під назвою PHP 2. Ця версія вже більшою мірою схожа на сьогоднішній PHP. Вона мала синтаксис і спосіб іменування змінних в стилі мови Perl, можливість вбудовування PHP операторів в html-код сторінки, автоматичну інтерпретацію форм, інтеграцію з базами даних. При цьому все працювало досить швидко, оскільки PHP прикомпилювалось до веб-серверу Apache. До 1997 року PHP використовувався вже на 50,000 доменах (не більше 1% всіх веб-серверів).

У тому ж 1997 році до проекту PHP підключилися Зев Сураскі (англ. Zeev Suraski) і Енді Гутманс (англ. Andi Gutmans). Ці студенти Техніону, одного з найкращих ізраїльських університетів, намагалися використовувати PHP/FI для одного з комерційних університетських проектів. При цьому їм довелося зіткнутися з багатьма труднощами і обмеженнями цієї технології. Вивчаючи початковий код PHP 2, Зеєв і Енді дійшли висновку про необхідність доопрацювання, а точніше істотної переробки PHP, особливо в плані синтаксису мови. Протягом декількох місяців вони блискуче впоралися з цим завданням.

Закінчивши роботу Зеєв і Енді домовились з Расмусом про співпрацю в галузі розвитку та вдосконалення мови. З цієї миті з'являється PHP Group — група однодумців, що працюють над розвитком технології PHP. Одержаний продукт з'явився на світ у 1998 році під назвою PHP 3.

При цьому головною особливість PHP 3 була можливість розширення ядра, що привернуло до роботи над PHP безліч сторонніх розробників, що створюють спеціалізовані модулі. Їх наявність дала PHP можливість працювати з величезною кількістю баз даних, протоколів, підтримувати велике число API. До кінця 1998 кількість користувачів PHP перевалила за 100000, а PHP був вже встановлений на не менше ніж 10% серверах Інтернету. У той ж час значному поширенню даної мови сприяли публікації в електронній пресі та вихід книжок для вивчення PHP.

Відразу ж після виходу PHP 3, Енді Гутманс і Зеєв Сураскі почали переробку ядра PHP. В першу чергу належало вирішити проблему підвищення продуктивності. Новий продукт, названий Zend Engine (від імен творців: Zeev і Andi), успішно справлявся з поставленим завданням і був реалізований в 1999 році. Основними реалізованними ідеями є можливість компіляції сценарію у виконуваний модуль, за рахунок чого продуктивність можна було підняти на порядок.

Визнання та поширення

PHP 4, що працює на цьому ядрі, вийшов в 2000 році. На додаток до збільшення продуктивності, PHP 4 мав нові можливості щодо підтримки сесій, буферизацію виводу, безпечні способи обробки інформації, що вводиться користувачем, і нові мовні конструкції. З виходом 4 версії PHP став використовуватися вже на більш ніж 20% доменів Інтернету.

За час з 2000 по 2004 рік продовжувалися активні роботи з покращення 4 версії, але майже відразу PHP Group приступила до продумування можливостей нової версії. В першу чергу було вирішено підсилити об'єктні можливості мови, що дозволяло використовувати його для реалізації масштабних проектів. Роботи із створення версії 5 велися тривалий час, в них брало участь рекордна кількість фахівців, зокрема Стерлінг Хьюз (Шаблон:Lang en:) і Маркус Бергера (Шаблон:Lang en:).

У липні 2004 року виходить офіційний реліз PHP 5. В першу чергу, як і планувалося, було перероблено весь механізм роботи з об'єктами. І якщо в попередніх версіях об'єктно-орієнтоване програмування на PHP було можливе в мінімальному ступені, а тому і використовувалося на практиці не часто, то PHP 5 володіє прекрасним потенціалом реалізації об'єктного програмування. Окрім цього, PHP збагатився рядом цінних розширень для роботи з XML, різними джерелами даних, генерації графіки і інше.

Серед інших украй корисних доповнень в PHP 5 слід зазначити нову схему обробки виключень. Конструкція try/catch/throw дозволяє весь код обробки помилок локалізувати в одному місці сценарію.

Всі основні бібліотеки для роботи з XML, запозичені в PHP 4, були піддані серйозній переробці. Такі популярні розширення, як SAX, DOM і XSLT, тепер використовують інструмент libxml2, що робить їх ще ефективнішими.

У PHP 5 також включені два нові модулі для роботи з протоколами — SimpleXML і SOAP. SimpleXML дозволяє значно спростити роботу з XML-даними, представляючи вміст XML-документа у вигляді PHP-об'єкта. Розширення SOAP дозволяє будувати на PHP сценарії, що обмінюються інформацією з іншими застосунками за допомогою XML-повідомлень поверх існуючих веб-протоколів, наприклад HTTP. Модуль для роботи з SOAP для PHP 5 надає розробникам засіб для достатньо швидкого створення ефективних SOAP-клієнтів і SOAP-серверів.[1]

Новий модуль PHP 5 MySQLi (MySQL Improved) призначений для роботи з MySQL-сервером версій 4.1.2 і вище, реалізовуючи не тільки процедурний, але і об'єктно-орієнтований інтерфейс до MySQL. Додаткові можливості цього модуля включають — SSL, контроль транзакцій, підтримка реплікації і ін. Очевидно, що, на цьому історія PHP не закінчується. Слід очікувати наступних версій мови із розширеними можливостями.

Додаткові можливості

Мова явно підтримує HTTP cookies відповідно до специфікацій Netscape. Це дозволяє проводити встановлення та читання невеликих сегментів даних на стороні клієнта.

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

Недоліки PHP

  • Незручність дизайну мови
  • Змінні з символом «$»
  • Складні назви поширених функцій (html_entities_decode, mysql_select_db, nl2br тощо)
  • Не підтримується Unicode в версіях до 6.0
  • Непередбачуваність нових версій PHP.

ПРИЗНАЧЕННЯ

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

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

Основні з них:

  • Автоматичне вилучення POST і GET-параметрів, а також змінних оточення веб-сервера в зумовлені масиви;
  • Файлові функції успішно обробляють як локальні, так і віддалені файли;
  • Автоматична відправка HTTP-заголовків;
  • Робота з cookies і сесіями;
  • Обробка файлів, що завантажуються на сервер;
  • Робота з HTTP заголовками і HTTP авторизацією;
  • Робота з XForms;
  • Робота з віддаленими файлами і сокетами.

В даний час PHP використовується сотнями тисяч розробників. Згідно з рейтингом Tiobe, що базується на даних пошукових систем, у грудні 2009 року PHP знаходиться на 3 місці серед мов програмування (поступаючись Java і C), піднявшись за рік на дві позиції. До найбільших сайтів, що використовують PHP, відносяться Facebook, В контакті, Wikipedia, YouTube.

Існують три основні області застосування PHP.

  • Створення скриптів для виконання на стороні сервера. PHP традиційно і найбільш широко використовується саме таким чином. Для цього вам будуть потрібні три речі. Інтерпретатор PHP (у вигляді програми CGI або серверного модуля), веб-сервер і браузер. Для того щоб можна було переглядати результати виконання PHP-скриптів в браузері, потрібен працюючий веб-сервер і встановлений PHP. Дивитись висновок PHP-програми можна в браузері, отримавши PHP-сторінку, сгенерированную сервером.
  • Створення скриптів для виконання в командному рядку. Ви можете створити PHP-скрипт, здатний запускатися без сервера або браузера. Все, що вам потрібно - парсер PHP. Такий спосіб використання PHP ідеально підходить для скриптів, які повинні виконуватися регулярно, наприклад, за допомогою cron (на платформах * nix або Linux) або за допомогою планувальника завдань (Task Scheduler) на платформах Windows. Ці скрипти також можуть бути використані в задачах простої обробки текстів.
  • Створення віконних додатків, що виконуються на стороні клієнта. Можливо, PHP є не найкращим мовою для створення подібних додатків, але, якщо ви дуже добре знаєте PHP і хотіли б використовувати деякі його можливості у своїх клієнтських додатках, ви можете використовувати PHP-GTK для створення таких додатків. Подібним чином ви можете створювати і крос-платформні додатки. PHP-GTK є розширенням PHP і не поставляється разом з основним дистрибутивом PHP.

PHP доступний для більшості операційних систем, включаючи Linux, багато модифікації Unix (такі як HP-UX, Solaris і OpenBSD), Microsoft Windows, Mac OS X, RISC OS, і багато інших. Також в PHP включена підтримка більшості сучасних веб-серверів, таких як Apache, IIS та багатьох інших.

PHP здатний генерувати не тільки HTML. Доступно формування зображень, файлів PDF і навіть роликів Flash (з використанням libswf і Ming), створюваних «на льоту». PHP також здатний генерувати будь-які текстові дані, такі, як XHTML і інші XML-файли. PHP може здійснювати автоматичну генерацію таких файлів і зберігати їх у файловій системі вашого сервера замість того, щоб віддавати клієнту, організовуючи, таким чином, серверний кеш для вашого динамічного контенту.

Одним із значних переваг PHP є підтримка широкого кола баз даних. Створити скрипт, який використовує бази даних, - неймовірно просто. Можна скористатися розширенням, специфічним для окремої бази даних (таким як mysql) або використовувати рівень абстракції від бази даних, такий як PDO, або під'єднатися до будь-якій базі даних, підтримує Відкритий Стандарт Сполуки Баз Даних (ODBC), за допомогою однойменного розширення ODBC. Для інших баз даних, таких як CouchDB, можна скористатися cURL або сокетами.

PHP має багато можливостей по обробці тексту, включаючи регулярні вирази Perl (PCRE) і багато інших розширень та інструментів для обробки і доступу до XML документами. У PHP обробка XML-документів стандартизована і відбувається на базі потужної бібліотеки libxml2, розширивши можливості обробки XML додаванням нових розширень SimpleXML, XMLReader і XMLWriter.

БАЗОВІ НАЛАШТУВАННЯ

Файл dbsettings.php відповідає за базові налаштування системи.

Необхідно встановити такі значення:

$serverDB - cервер баз даних, який використовується на хостингу, можливі наступні значення: 0 - використовується сервер баз даних MySQL (використовується на переважній більшості хостингових платформ). Рекомендується використовувати саме його, так як CMS будувалася орієнтованою саме на нього. 1 - використовується сервер баз даних PostgreSQL. Для версії 1.4 на даний момент підтримка PostgerSQL неповна. Рекомендується використовувати лише на CMS версії 1.3

$hostNameDB - ім'я серверу бази даних. Як правило, необхідно свтановити як localhost, якщо сервер баз даних розміщений на тому ж комп'ютері, що й хостинг.

$nameDB - назва бази даних, в якій зберігатимуться всі налаштування та матеріали сайту. Базу даних необхідно створити до інсталяції системи.

$userNameDB - ім'я користувача, що має доступ до бази даних, вказаної в $nameDB.

$userPasswordDB - пароль користувача бази даних, який був вказаний в $userNameDB.

$tableprefix - префікс перед кожною таблицею бази даних. Його рекомендується використовувати тоді, коли Ви використовуєте одну базу даних для декількох систем.

$tableusersprefix - префікс перед назвою таблиці users. Рекомендується використовувати, якщо ви використовуєте багатомовну версію SiMan CMS та хочете, щоб в усіх версіях був спільний набір користувачів.

$session_prefix - підвищує безпеку при використанні декількох SiMan CMS на одному хості. Обов'язково змініть його!

$_settings['use_protect_code'] - підвищує безпеку, використовуючи графічне зображення 4-х значного коду, який генерується при реєстрації нового користувача чи інших діях, які вимагають антибот-перевірки (1 - ввімкнуто, 0 - вимкнуто).

$dontExecuteUsersSqlInScript - дозволяє (0) або забороняє (1) виконання SQL-запитів, введених відвідувачем сайту. Рекомендується встановити значення 1 для покращення безпеки системи, але це відключить деякі можливості, наприклад імпорт бази даних безпосередньо з скрипту.

Синтаксис

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

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

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

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

Також можливий більш короткий варіант виведення рядка:

 <?= '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 (з # до кінця рядка).

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

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

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

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

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

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

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

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

Інтерпретатор PHP має спеціальний конфігураційний файл - php.ini, що містить безліч налаштувань, зміна яких впливає на поведінку інтерпретатора. Є можливість відключити використання ряду функцій, змінити обмеження на використовувану скриптом оперативну пам'ять, час виконання, обсяг завантажуваних файлів, налаштувати журнал роботи помилок, роботу з сесіями та поштовими сервісами, підключити додаткові розширення, а також багато іншого. Можливо дроблення великого конфігураційного файлу на частини. Наприклад, широко поширена практика винесення налаштувань розширень в окремі файли. Параметри інтерпретатора можуть бути перевизначені в файлах конфігурації HTTP-сервера (наприклад,. Htaccess в Apache) або в самому скрипті під час виконання за допомогою команди ini_set.