PHP (англ. PHP: Hypertext Preprocessor — PHP: гіпертекстовий препроцесор), попередня назва: Personal Home Page Tools — скриптова мова програмування, була створена для генерації HTML-сторінок на стороні вебсервера. PHP є однією з найпоширеніших мов, що використовуються у сфері веброзробок (разом із Java, .NET, JavaScript, Python, Ruby). PHP підтримується переважною більшістю хостинг-провайдерів. PHP — проєкт відкритого програмного забезпечення.
PHP | |
---|---|
Парадигма | імперативна, об'єктно-орієнтована, функціональна |
Дата появи | 1995 |
Творці | Расмус Лердорф |
Розробник | The PHP Group |
Останній реліз | 8.3.+ (18 січня 2024 ) |
Тестова версія | PHP 8.3.0 RC 6 (9 листопада 2023 ) |
Система типізації | слабка типізація[d], динамічна типізація[d] і d |
Під впливом від | , Perl[4], C[4], Java[4], Tcl[5], HTML і JavaScript |
Мова реалізації | C[6] |
Операційна система | UNIX-подібні операційні системи і Windows |
Ліцензія | d[7] |
Звичайні розширення файлів | .php [8] або .phar [9] |
Репозиторій вихідного коду | github.com/php/php-src |
Вебсайт | php.net |
|
PHP інтерпретується вебсервером у HTML-код, який передається на сторону клієнта. На відміну від скриптової мови JavaScript, користувач не бачить PHP-коду, тому що браузер отримує готовий html-код. Це є перевагою з точки зору безпеки, але погіршує інтерактивність сторінок. Але ніхто не забороняє використовувати PHP для генерування JavaScript-кодів, які виконуються вже на стороні клієнта.
Особливості
PHP — мова, у код якої можна вбудовувати безпосередньо html-код сторінок, які, у свою чергу, коректно оброблюватимуться PHP-інтерпретатором. Обробник PHP просто починає виконувати код після відкриваючого тегу (<?php
) і продовжує виконання до того моменту, поки не зустріне закриваючий тег.
Велика різноманітність функцій PHP дає можливість уникати написання багаторядкових функцій, призначених для користувача, як це відбувається в C або Pascal.
Наявність інтерфейсів до багатьох баз даних
Нетрадиційність
- Мова PHP здаватиметься знайомою програмістам, що працюють у різних областях. Багато конструкцій мови запозичені з С, Perl. Код PHP дуже схожий на той, який зустрічається в типових програмах мовами С або Pascal. Це помітно знижує початкові зусилля при вивченні PHP. PHP — мова, що поєднує переваги Perl та С і спеціально спрямована на роботу в Інтернеті, мова з універсальним і зрозумілим синтаксисом. І хоча PHP є досить молодою мовою, вона здобула таку популярність серед web-програмістів, що в наш час є найпопулярнішою мовою для створення вебзастосунків (скриптів).
Наявність сирцевого коду та безкоштовність
- Стратегія Open Source, і розповсюдження початкових текстів програм у масах, безсумнівно справили сприятливий вплив на багато проєктів, в першу чергу — Linux хоч і успіх проєкту Apache сильно підкріпив позиції прихильників Open Source. Сказане відноситься і до історії створення PHP, оскільки підтримка користувачів зі всього світу виявилася дуже важливим чинником у розвитку проєкту PHP. Ухвалення стратегії Open Source і безкоштовне розповсюдження початкових текстів PHP надало неоціненну послугу користувачам. Окрім цього, користувачі PHP в усьому світі є свого роду колективною службою підтримки, і в популярних електронних конференціях можна знайти відповіді, навіть на найскладніші питання.
Ефективність
- Ефективність є дуже важливим чинником у програмуванні для середовищ розрахованих на багато користувачів, до яких належить і web. Важливою перевагою PHP є те, що ця мова належить до інтерпретованих. Це дозволяє обробляти сценарії з достатньо високою швидкістю. За деякими оцінками, більшість PHP-сценаріїв (особливо не дуже великих розмірів) обробляються швидше за аналогічні їм програми, написані на Perl. Проте хоч би що робили розробники PHP, виконавчі файли, отримані за допомогою компіляції, працюватимуть значно швидше — в десятки, а іноді і в сотні разів. Але продуктивність PHP достатня для створення цілком серйозних вебзастосунків.
Історія
Перші версії
Історія PHP починається з 1995 року, коли Расмус Лердорф (англ. Rasmus Lerdorf) створив простий застосунок мовою Perl, що аналізував відвідування користувачами його резюме на вебсайті. Потім, коли цим застосунком вже користувалися кілька осіб, а число охочих одержати його постійно збільшувалося, Лердорф назвав своє творіння Інструменти для особистої домашньої сторінки англ. Personal Home Page Tools версія 1 і виставив для вільного завантаження. З цієї миті почався небувалий зліт популярності PHP.
Як це завжди буває, терміново було потрібне доопрацювання і нові доповнення. Для їхньої реалізації Расмус створює нову версію пакету, тепер уже написану на С. Отриманий таким чином інструмент набуває робочої назви (укр. Персональна Домашня сторінка / Інтерпретатор Форм, англ. Personal Home Page / Forms Interpreter), надалі він також буде відомий під назвою . Ця версія вже більшою мірою схожа на сьогоднішній 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 безліч сторонніх розробників, що створюють спеціалізовані модулі. Їх наявність дала PHP можливість працювати з величезною кількістю баз даних, протоколів, підтримувати велике число API. До кінця 1998 року кількість користувачів PHP перевищила 100 тисяч, а PHP був уже встановлений на понад 10 % серверах Інтернету. Водночас значному поширенню даної мови сприяли публікації в електронній пресі та видання посібників із PHP.
Відразу ж після виходу PHP 3, Енді Гутманс і Зев Сураскі почали переробку ядра PHP. Насамперед належало розв'язати проблему підвищення продуктивності. Новий продукт, названий Zend Engine (від імен творців: Zeev і Andi), успішно справлявся з поставленим завданням і був реалізований 1999 року. Основними реалізованими ідеями є можливість компіляції сценарію у виконуваний модуль, за рахунок чого продуктивність можна було підняти на порядок.
PHP 3 та PHP 4
Зеєв Сураскі та Ані Гутманс переробили аналізатор в 1997 році і сформували базу PHP 3, змінивши назву мови на рекурсивний акронім PHP: Hypertext Preprocessor. Після цього почалося публічне тестування PHP 3, а офіційний запуск відбувся в червні 1998 року. Після цього Сураскі та Гутманс розпочали нове перекодування ядра PHP, видавши Zend Engine у 1999 році. Вони також заснували Zend Technologies в Рамат-Гані, Ізраїль.
22 травня 2000 р. Був випущений з підтримкою Zend Engine 1.0. Станом на серпень 2008 року ця філія досягла версії 4.4.9. PHP 4 більше не розробляється, оновлення безпеки також більше не були випущені.
PHP 5
14 липня 2004 р. Був випущений PHP 5 з новим двигуном Zend Engine II. PHP 5 включав нові функції, як-от покращена підтримка об'єктно-орієнтованого програмування, розширення PHP Data Objects (PDO) (який містить легкий і послідовний інтерфейс для доступу до баз даних) та численні поліпшення продуктивності. У 2008 році PHP 5 став єдиною стабільною версією, що розроблялася. Пізній статичний зв'язок відсутній у PHP і був доданий у версії 5.3.
Багато високопрофесійних проєктів із відкритим кодом з 5 лютого 2008 року перестали підтримувати PHP 4 в новому коді, оскільки це ініціатива GoPHP5, що надається консорціумом розробників PHP, що сприяє переходу від PHP 4 до PHP 5.
З часом інтерпретатори PHP стали доступними для більшості існуючих 32-розрядних та 64-розрядних операційних систем, або будували їх із вихідного коду PHP, або використовували попередньо побудовані двонарні файли. Для версій PHP версії 5.3 та 5.4 єдиними доступними двосторонніми дистрибутивами Microsoft Windows були 32-розрядні версії x86, що вимагають 32-розрядний режим сумісності Windows при використанні інформаційних служб Інтернету (IIS) на 64-розрядній платформі Windows. PHP версії 5.5 зробив збірки 64-розрядних x86-64 доступними для Microsoft Windows.
PHP 6 та Unicode
PHP отримав змішані відгуки через відсутність власної підтримки Unicode на рівні основної мови. У 2005 році був започаткований проєкт, очолюваний Андрієм Змієвським, для залучення рідної підтримки Unicode на PHP, шляхом вбудовування бібліотеки «Міжнародні компоненти для Unicode» (ICU) та вбудованих текстових рядків як UTF-16. Оскільки це призведе до серйозних змін як до внутрішньої частини мови, так і до коду користувача, планувалося випустити його як версію 6.0 мови разом з іншими основними функціями, які розвиваються.
Проте дефіцит розробників, які зрозуміли необхідні зміни та проблеми продуктивності, що виникають внаслідок перетворення на UTF-16 та з нього, що рідко використовується в вебконтексті, призвело до затримок проєкту. Як результат, випуск PHP 5.3 був створений у 2009 році, при цьому багато не-Unicode-функцій було відновлено з PHP 6, зокрема простору імен. У березні 2010 року проєкт у своїй нинішній формі був офіційно відкинутий, і був підготовлений випуск PHP 5.4, що містить більшість опублікованих функцій, що не входять до Unicode, з PHP 6, як-от риси та переприв'язка до закриття. Початкові сподівання полягали в тому, що для інтеграції з Unicode був би сформований новий план, але з 2014 року ніхто не був прийнятий.
PHP 7
Впродовж 2014 та 2015 років було розроблено нову основну версію PHP, яку було пронумеровано PHP 7. Нумерація цієї версії викликала дебати. Хоча реліз PHP 6 з Unicode ніколи не був випущений, декілька назв статей і книг посилалися на назву PHP 6, що могло викликати плутанину, якби новий реліз повторно використовував цю назву. Після голосування було обрано назву PHP 7.
PHP 7 вийшла 3 грудня 2015 року і містить такі ключові нововведення:
- Завдяки суттєвим допрацюванням нова версія дала приріст продуктивності в 2—3 рази на реальних проєктах.
- Можливість декларування скалярних типів.
<?php function sumOfInts(int ...$ints) { return array_sum($ints); }
- Можливість декларувати тип, того що має повернути метод.
<?php function arraysSum(array ...$arrays): array { return array_map(function(array $array): int { return array_sum($array); }, $arrays); }
- Анонімні класи
<?php $app = new Application; $app->setLogger(new class implements Logger { public function log(string $msg) { echo $msg; } });
- Додані нові операції «$a ?? $b» (аналогічно !is_null($a) ? $a : $b) та «$a <=> $b» (повідомляє чи більший, менший чи рівний параметр $a до $b).
PHP 8
26 листопада 2020 року вийшло нова версія php, PHP 8. Серед ключових нових можливостей мови:
- Іменовані аргументи.
<?php htmlspecialchars($string, double_encode: false);
- Замість анотацій PHPDoc тепер ви можете використовувати структуровані метадані з власним синтаксисом PHP.
- Опис властивостей на рівні конструктора
<?php class Point { public function __construct( public float $x = 0.0, public float $y = 0.0, public float $z = 0.0, ) {} }
- Об'єднання типів
<?php function foo(int|float $a) {]
- Оператор nullsafe. Якщо якийсь об'єкт / метод / властивість не визначена тоді результат буде null.
<?php $country = $session?->user?->getAddress()?->country;
- JIT-компіляція
Визнання та поширення
, що працює на цьому ядрі, вийшов 2000 року. На додаток до збільшення продуктивності, PHP 4 мав нові можливості щодо підтримки сесій, , безпечні способи обробки інформації, що вводиться користувачем, і нові . З виходом 4 версії PHP став використовуватися вже на більш ніж 20 % доменів Інтернету.
Протягом 2000—2004 років продовжувалися активні роботи з покращення четвертої версії, але майже відразу приступила до продумування можливостей нової версії. Насамперед було вирішено підсилити об'єктні можливості мови, що дозволяло використовувати його для реалізації масштабних проєктів. Роботи із створення п'ятої версії велися тривалий час, в них брало участь рекордна кількість фахівців, зокрема Стерлінг Хьюз (англ. Sterling Hughes) і Маркус Бергера (англ. Marcus Boerger).
У липні 2004 року виходить офіційний реліз PHP 5. У першу чергу, як і планувалося, було перероблено весь механізм роботи з об'єктами. І якщо в попередніх версіях об'єктно-орієнтоване програмування на PHP було можливе в мінімальному ступені, а тому і використовувалося на практиці не часто, то PHP 5 володіє прекрасним[] потенціалом реалізації об'єктного програмування. Окрім цього, PHP збагатився рядом цінних[] розширень для роботи з XML, різними джерелами даних, генерації графіки і інше.
Серед інших украй корисних доповнень в PHP 5 слід зазначити нову схему обробки винятків. Конструкція try/catch/throw дозволяє весь код обробки помилок локалізувати в одному місці сценарію.
Всі основні бібліотеки для роботи з XML, запозичені в PHP 4, були піддані серйозній переробці. Такі популярні розширення, як SAX, DOM і XSLT, тепер використовують інструмент , що робить їх ще ефективнішими.
У 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 розроблялася з жовтня 2006 року. Було зроблено безліч нововведень, як, наприклад, виключення з ядра регулярних виразів POSIX і «довгих» суперглобальних масивів, видалення директив safe_mode, magic_quotes_gpc і register_globals з конфігураційного файлу php.ini. Одним з основних нововведень повинна була стати підтримка Юнікоду. Однак у березні 2010 року розробка PHP6 була визнана безперспективною через складнощі з підтримкою Юнікоду. Вихідний код PHP6 переміщений на гілку, а основною лінією розробки стала версія 5.4.
У 2014 році було проведено голосування, за результатами якого наступна версія отримала назву PHP 7. Вихід нової версії планувався в середині жовтня 2015 року. У березні 2015 року Zend представили інфографіку в якій описані основні нововведення PHP 7.
3 грудня 2015 року було оголошено про вихід PHP версії 7.0.0.
Нова версія ґрунтується на експериментальній гілці PHP, яка спочатку називалася phpng (PHP Next Generation — наступне покоління), і розроблялася з нахилом на збільшення продуктивності і зменшення споживання пам'яті. У новій версії додана можливість вказувати тип повертаються з функції даних, доданий контроль переданих типів для скалярних даних, а також нові оператори.
Синтаксис
Відокремлення 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 не рекомендується і очікується, що він буде відсутній у [].
Найпростіша програма Hello world на PHP виглядає так:
<?php echo 'Hello, world!'; ?>
PHP виконує код, що знаходиться в середині на кшталт <?php ?>
. Все, що знаходиться поза обмежувачами, виводиться без змін. Таким чином виконується вставка PHP-коду в HTML-код. Наприклад, код html-сторінки з попереднім прикладом виглядатиме так:
<html> <head> <title>Тестуємо PHP</title> </head> <body> <?php echo 'Hello, world!'; ?> </body> </html>
Відокремлення інструкцій
Інструкції в PHP відокремлюються символом ;
. Перед закінченням скрипту (перед тегом ?>
) крапку з комою ставити необов'язково.
Коментарі
Коментарі у PHP можуть бути як однорядкові, так і багаторядкові. Однорядкові коментарі починаються з //
або #
(коментар скриптових мов UNIX). Багаторядкові коментарі починаються символами /*
і закінчуються */
. Слід зазначити, що однорядкові коментарі йдуть або до кінця поточного рядка, або до завершального тегу ?>
. Наприклад:
// це однорядковий коментар # і це також однорядковий коментар /* а ось це вже багаторядковий коментар */
Змінні
Основою будь-якого програмування є змінні. PHP, як і деякі інші UNIX-скриптові мови, не потребує їх опису. Існує три стилі оформлення змінних у PHP:
- короткий стиль — змінні записуються у вигляді:
$variable
. Використовується в більшості випадків. Змінна, яка створюється програмним кодом, записується таким чином. Можливо також використання такого стилю для добування змінної із ФОРМИ, якщо ввімкненоregister_globals
у файлі конфігурації php.ini. - середній стиль —
$_POST['variable']
,$_GET['variable']
,$_REQUEST['variable']
. Використовується для отримання даних із полів ФОРМИ. Залежно від типу передачі даних установлюється POST або GET або REQUEST для обох випадків. Дані змінні називаються також глобальними. - довгий стиль —
$HTTP_POST_VARS['variable']
,$HTTP_GET_VARS['variable']
. Найповніший стиль запису і найменш використовуваний. Починаючи з PHP 5, ці змінні можна вимкнути. Використовувати змінні такого типу не рекомендовано задля кращої сумісності із майбутніми версіями PHP.
Приклад запису змінної з десятковим дробом та рядкової змінної: php
З точки зору системи типізації, PHP є мовою програмування з динамічною типізацією. Немає необхідності явного визначення типу змінних, хоча така можливість існує. У разі звернення до змінної, інтерпретатор PHP тлумачить її тип відповідно до контексту. За необхідності можливе приведення змінної до певного типу за допомогою відповідних конструкцій мови. Це може знадобитись, якщо зважити, що значення змінної можуть трактуватись по-різному в залежності від її типу. Також можливе визначення типу відповідної змінної на певному етапі виконання сценарію. Імена змінних чутливі до регістру символів.
Типи даних
До базових типів належать булеві дані, цілі та дійсні числа з рухомою комою, а також рядки. Булеві дані виражають істинність значення. Цілі числа можуть бути подані у двійковому, вісімковому, десятковому та шістнадцятковому вигляді. Розмір цілого числа може змінюватись залежно від платформи, зазвичай, розрядність становить 32 біти. PHP не підтримує беззнакові цілі числа. Дійсні числа з рухомою комою можуть бути подані в десятковій або експоненційній формі. Для кожної змінної можна надати власний тип даних. Для цього існує декілька видів:
# перший вид надання змінній типу даних $var1 = true; $var2 = '1abc'; $var3 = 'abc1'; settype($var1, 'string'); // видасть рядок 1 settype($var2, 'integer'); // видасть число 1 settype($var3, 'bool'); // видасть true # другий тип надання змінній типу даних $var1 = (int); $var1 = '1abc'; echo $var1; // видасть число 1
Робота з рядками
Рядки ділять на два класи — рядки, що підлягають аналізу, та ті, що не підлягають. Перший клас досліджується інтерпретатором на наявність посилань на інші змінні, і за умови їхньої наявності робиться підстановка значень у відповідне місце. Крім того, клас дозволяє проводити маніпуляції з керівними символами. Символ рядка може мати лише одне з 256 значень, але є можливість працювати з багатобайтовими символами. Доступ до символів рядка можливий із використанням синтаксису, схожого на доступ до елементів масивів.
PHP надає широкий спектр функцій для пошуку та заміни тексту в рядках. Для цього використовують як традиційний підхід, так і спеціальний, що базується на використанні регулярних виразів. При цьому в мові реалізована підтримка двох видів регулярних виразів — Perl-сумісні та POSIX-сумісні, що розрізняються за синтаксисом та особливостями роботи.
Змішані типи даних
До належать масиви, хеші та об'єкти. Масиви з погляду мови програмування є впорядкованими наборами однотипних змінних. Вимога однотипності наповнення масивів не ставиться. Технічно, масиви — це впорядковані карти, що відображають ключові значення на позиції змінних даних. Вмістом значення, на яке вказує ключ може бути будь-чим, що можна подати у вигляді змінної. Не існує жодних обмежень, крім обсягу пам'яті, що накладаються на кількість ключів масиву.
Особливістю мови є відмова від рівномірного розподілу ключів масивів. Реалізовано і модель багатовимірних масивів, причому без явного обмеження глибини вкладеності. Корисною властивістю PHP є можливість асоціації масивів із функцією зворотного виклику. Ці функції дозволяють проводити дії над одним чи кількома масивами в пакетному режимі. PHP наділений великою кількістю функцій роботи з масивами. У PHP можна по-різному оголошувати масиви:
# перший вид $var = array('key' => 'value'); // створить масив $array. print_r($var); // Array ( ['key'] => 'value' ) # другий вид $var[0] = 0; $var[1] = 'Hello World'; $var['key'] = 'Інший рядок'; print_r($var); // Array ( [0] => 0 [1] => 'Hello World' ['key'] => 'Інший рядок' ) # третій вид $var[] = 'string'; $var[] = 24081991; $var[] = 25.00; print_r($var); // Array ( [0] => 'string' [2] => 24081991 [3] => 25.00 ) # Четвертий вид (доступний з PHP 5.4) $var = [ 'foo' => 'bar' ]; print_r($var); // Array ( ['foo'] => 'bar' )
Також, існують два спеціальні типи даних — ресурс та NULL. Ресурс — спеціальна змінна, що містить посилання на зовнішній ресурс. Ресурси створюються та використовуються в спеціалізованих функціях. Оскільки тип містить спеціальні вказівники на відкриті файли, (англ. include) та інше, то будь-які дії над значенням ресурсу не мають сенсу.
Область видимості змінної — середовище, в якій вона визначена. Розрізняють локальні та глобальні змінні. За замовчуванням, всі змінні мають локальний характер дії. Виділяють особливий тип змінних — статичні, що дозволяє повторне звернення до змінної в певному сегменті коду, причому змінна буде зберігати попередньо отримане значення. Існує також поняття суперглобальних змінних, які є місцем збереження даних оточення або даних, отриманих ззовні. Підтримується концепція динамічних змінних та функцій.
Константи у PHP — простих значень. Можливе визначення константи, причому після її оголошення стає неможливою зміна її значення чи анулювання. Константи можуть мати лише значення. Підтримується можливість отримання значення константи за динамічним ім'ям. Область видимості констант є глобальною для сценарію та всіх під'єднаних компонентів. Також у ядрі мови визначено чимало системних констант.
Конструкції мови
Оператори з погляду мови програмування дозволяють виконувати відповідну дію над одним чи кількома операндами. Оператори бувають трьох типів — унарні, бінарні та тернарні. Оператори, як і в інших мовах, характеризуються не лише дією, а й асоціативністю та . Особливістю булевих операцій порівняння — розрізнення двох класів — з урахуванням типу і без нього, при якому відбувається приведення до відповідного типу. Округлення відбувається завжди в менший бік. У мові реалізовані особливі класи операторів — виконання, управління помилками та перевірки належності до класу.
Функції з погляду мови програмування є контейнерами коду, причому можливе включення інших функцій та класів. На цьому і базується можливість умовного визначення функції. У цьому випадку висувається вимога попередньої декларації викликаної функції, що не обов'язкове в інших випадках. Можливості перевизначення чи деактивації функції не існує. Результат, який повертає функція може мати будь-який тип.
У мові реалізована функціональність посилань. Можливо створити необмежену кількість псевдонімів, що посилаються на єдиний сегмент даних. При вивільненні будь-якого з псевдонімів, сегмент даних залишається в пам'яті до моменту завершення сценарію або вивільнення усіх посилань.
Натомість прийнятого в багатьох мовах принципу перевантаження функцій, що дозволяє змінити хід виконання певної функції залежно від типу та кількості вхідних параметрів, у PHP використовується метод динамічних аргументів. Це дає змогу не визначати кількість параметрів функцій при їх оголошенні, а працювати з тими аргументами, які були отримані на момент виклику функції. У тілі функції можливо отримати кількість переданих їй аргументів і проводити відповідні маніпуляції. При оголошенні функції звичайним чином можливе задання значень аргументів за замовчуванням. Функції можуть повертати лише одне значення, проте це обмеження можна оминути, використавши не лише масиви, а й посилання. Передача аргументів за посиланням неможлива під час виконання та оголошення функції.
Після виконання сценаріїв, простір пам'яті, займаної ними, очищується збирачем сміття. Проте за потреби можливе власноруч кероване виконання очищення пам'яті від надлишкових сегментів даних під час виконання скриптів, але використання функцій очищення пам'яті не є виправданим, хоча така можливість існує.
Для побудови програмних комплексів можна використовувати модульний підхід, виконуючи розділення різнорідного коду. При потребі, можливе виконання під'єднання необхідних модулів, причому операція виконання може бути і умовною. Під'єднані до скрипту файли можуть повертати значення.
Додаткові можливості
Мова явно підтримує HTTP cookies відповідно до специфікацій Netscape. Це дає змогу проводити встановлення та читання невеликих сегментів даних на стороні клієнта. PHP надає можливість організації роботи з користувачем впродовж сеансів (сесій). У сесії можна зберігати різні дані, включаючи об'єкти.
Створення GUI-додатків
PHP не орієнтований на створення додатків, але є потреба створення інтерфейсів, задля: налаштувань серверів, безперервного виконання, налагодження скриптів (сценаріїв), керування локальних, тестових серверів, тощо. Через це й виникли розв'язання проблеми.
Розширення
Основна серед реалізацій — використання розширень, що фактично є надлаштунками для UI-бібліотек.
Загалом, розширення виокремлюються на три типи: php-розширення, -обгортки (розширення, що використовують системні функції через технологію ) та консольні обгортки (розширення, що спілкуються із php безпосередньо через командний інтерфейс)
До перших можна віднести: WxPHP [ 22 січня 2019 у Wayback Machine.] (Windows, Linux, Mac OS X), Winbinder [ 3 березня 2019 у Wayback Machine.] (Windows)
До других відносяться: Win32Std [ 17 листопада 2019 у Wayback Machine.], Tk [ 28 листопада 2018 у Wayback Machine.] (реалізація для Python)
До третіх належать: PHP-UI [ 11 грудня 2018 у Wayback Machine.], PHP-XCB [ 4 січня 2017 у Wayback Machine.]
Також є розширення, що становить собою двосторонню обгортку, як використання інших мов для розширення php, так і навпаки — PSV Component Library, — проєкт, що складається із трьох суб-проєктів: PHP4Delphi [ 11 червня 2018 у Wayback Machine.] (основний проєкт, автор — Сергій Перевознюк): Реалізація поєднання php із Delphi-програмою через засоби WinAPI
активно розроблювалося з 1999 року, але через зайнятість автора, не оновлювалося вже 4 роки, через що з'явилися форки — відгалуження, з оновленнями, які можна переглянути за посиланням https://github.com/perevoznyk/php4delphi/network [ 11 червня 2018 у Wayback Machine.], одним із таких є PHP4Lazarus [ 11 червня 2018 у Wayback Machine.].
Проєкт PHP extensions development framework (другорядний): Засоби для створення php-розширень, VCL-компоненти, хоч цей проєкт і виокремлює автор, але він є невіддільною частиною PHP4Delphi [ 11 червня 2018 у Wayback Machine.], базові компоненти якого, мають бути використані для створення застосунків
Проєкт php4Applications (другорядний) — розширення для інших мов, що дає можливість легко використовувати php у C#, C, Lazarus, Delphi, , базується на PHP4Delphi [ 11 червня 2018 у Wayback Machine.] (надає доступ до , що спрощують використання php і позбавляють потреби написання власної обгортки).
Середовища розробки графічних інтерфейсів
Але є місце й повноцінним середовищам розробки, із можливістю створення програм:
DevPHP (IDE)
Піонером у цій категорії є студія DevPHP-IDE, що використовувала Kylix(Delphi), як основний інтерфейс, та php-Cli задля створення користувацьких програм.
Вона містила редактор коду, декілька інструментів та візуальний перегляд HTML-сторінок.
Уперше була представлена у 2002 році, наразі має 3 стабільні версії, розробка не триває, зупинилася через загибель гол. розробника в автокатастрофі.
CodeGear Rad Studio (Extension)
Після неї з'явилося розширення — набір компонентів для CodeGear Rad Studio 2009, на базі php4delphi, з деякими покращеннями (вебелементи, інспектор, зневаджувач), тривала її підтримка протягом 4 версій, друга з яких увійшла в платне доповнення Rad Studio 2010: Була можливість використовувати скрипти, надавати стиль вебкомпонентам, переглядати стилі і вебсторінку до збірки програми, запускати локальний сервер, збирати програму, як окремий застосунок та налагоджувати код.
Починаючи з третьої версії, розширенню студії дали назву PHPDev Xe, згодом Delphi зазнала перевтілень, і, розробку PHPDev Xe було призупинено на невизначений термін.
DevelStudio (RAD)
У 2009 році на базі того самого розширення з'явилася студія, згодом, до розробки студії MessBox DVI, приєднався Ростислав Романов, і вона змінила назву на , перша версія з такою назвою (0.1.7) мала невелику кількість компонентів у наборі інструментів, і підтримувала лише php 4.
У 2-й версії, отримала підтримку php 5, були добавлені потоки, та внесені численні зміни. Код збірки (генерації) програм було закрито, а попередні версії, як і форум самої програми, затерто, з метою перешкоджання зловмисникам.
Також, друга версія була інтегрована з набором компонентів AlphaControls [ 12 квітня 2022 у Wayback Machine.], через який проблема із вірусами здобула нечуваного масштабу — середовище програмування стало широко вживаним серед початківців хакерів, та популярні на той час антивіруси (MacAffie, AVG, Avira) включили стаб середовища до архіву вірусів, через що, користуватися нею стало неможливо.
Через деякий час, автор AlphaControls [ 12 квітня 2022 у Wayback Machine.] звернувся зі скаргою до розробників, й набір компонентів було повністю вирізано з середовища, але — з нових версій; у цей раз видалити посилання на попередні версії не вдалося, форум був незадоволений.
У 3-й версії середовища з'явилися нові компоненти, в тому числі й браузер Chromium, замість IE, що зосередило увагу веброзробників, й користувачів середовища «Алгоритм» (схожа ідея — програмування на мові HTML). На той момент компіляція програм у «Алгоритмі» була платна, тому , як нове і безкоштовне середовище розробки, переманила на себе більшість аудиторії.
З виходом версії 3.0.2 (2012 рік), розробка середовища зупинилася — головний розробник утратив сирці (початкові коди).
З цього часу почалися намагання відродити проєкт, першим узявся ForumRules, але його намагання виявилися марними.
Після публікації сирців, що залишилися, у 2014 році почалися перші кроки по відновленню, було зібрано версію, що працювала з проєктами.
Лише наприкінці 2018 року весь початковий код [ 28 квітня 2019 у Wayback Machine.] було відновлено, він був узятий за основу іншої студії — PDL (Project Development Laboratory, пізніше — PHP DL).
Після звернення у 2019 році до автора, щодо зміни політики поширення студії, та скаргою на відсутність посилань на використані бібліотеки (DCEF, PHP4Delphi, TSizeCtrl, SynEdit), форум було видалено, а одну з сторінок з описом проєкту переспрямовано на головну сторінку ()
PHPQt (IDE)
У 2015 році Олександр Казанцев почав вивчати алгоритми розробки інтерфейсів, й створив розширення php_qml [ 11 червня 2018 у Wayback Machine.], що давало змогу створювати віджети з бібліотеки QT, але мало підтримку лише на Windows.
З цього почалася розробка PHPQt [ 1 квітня 2022 у Wayback Machine.], перші версії не виявляли до себе інтересу з сторони веброзробників, тому автор почав поглиблено допрацьовувати розширення.
28 липня 2015 року був опублікований перший варіант компілятора проєктів, на той момент це був простий виконувач скриптів, що прикріпляв php-код до стабу (як DevelStudio), і мав залежність від WinAPI => Windows, на цій вже стадії підтримувалися майже всі віджети й багатопотоковість, була оптимізація php-коду. З цього моменту двигун назвали PQEngine,
3 серпня 2016 року вийшла п'ята версія компілятора застосунків (PqBuilder), що перейшов на базу PlastiQ, й мав підтримку вже новітнього на той час php 7, проєкти отримали більш повноцінний компілятор і вже не потребували наявності PqEngine.dll поблизу з виконуваним файлом, натомість візуальні бібліотеки стали додаватися статично — як файли, а не вшиватися усередину програми. Такий крок був прийнятий задля сумісності з іншими системами, та оригінальними бібліотеками Qt.
З появою шостої версії, проєкт став доповненням до студії Qt Studio, а компілятор став усього лише оптимізатором перед кінцевою зборкою програми. З'явився повноцінний редактор інтерфейсу, підказки в редакторі кода, та почала створюватися документація. З цього моменту зробили анонс щодо створення PqStudio, але її розробка не зайшла далеко.
DevelNext (IDE)
Паралельно із цим, головний розробник DevelStudio почав створювати нове середовище програмування, із старою ідеєю — DevelNext [ 11 червня 2016 у Wayback Machine.], студія взяла за основу графічну бібліотеку Swing та JavaFX, в результаті вийшло повністю нове середовище, із підтримкою CSS, але повністю без підтримки PHP — проєкт був заснований на власній мові програмування — також інтерпретовуваній, jPHP, і проіснував у цьому вигляді до 17-ї версії (17-RC1), на якій проєкт і був покинутий.
У 16-й версії, середовище DevelNext отримало підтримку php 7, й була розширена ентузіастами для розробки на OS Android.
Підключення PHP до проєкту
Також існують розширення, для геометрально-протилежного застосування — підключення PHP до проєкту на іншій мові програмування: Phalanger [ 1 травня 2019 у Wayback Machine.] (C#) — php 5.4, Peachpie [ 20 липня 2019 у Wayback Machine.] (C#) — php 7, PHP4Delphi [ 11 червня 2018 у Wayback Machine.](Lazarus, Delphi, C#, C, C++) — php 5.6, JPHP [ 5 жовтня 2018 у Wayback Machine.](Java) — php 7.0, PHPly [ 11 червня 2018 у Wayback Machine.](Python) — php 5.6
Середовища розробки PHP
VIM (текстовий редактор)
Для цього редактора є велика кількість плагінів які додають підсвітку синтаксису, автодоповнення коду, перевірку помилок синтаксису і багато інших можливостей для редагування коду.
Недоліки PHP
- Незручність дизайну мови[]
- Змінні з символом
$
- Складні назви поширених функцій (
html_entity_decode
,mysql_select_db
,nl2br
тощо) - Не підтримується Unicode у версіях до 6.0
- Змінні з символом
- Непередбачуваність нових версій PHP.
Критика
У статті «PHP: a fractal of bad design [ 21 квітня 2012 у Wayback Machine.]» представлений докладний і ґрунтовний огляд проблем у дизайні мови програмування PHP. Автор показує винятковість PHP як одної з найбільш неопрацьованих мов, проблеми в якій мають систематичний характер. Зокрема у статті продемонстровані проблеми в самій мові, бібліотеці функцій, структурах, механізмах роботи з даними, екосистемі, засобах зневадження. Вказані недоробки в безпеці, надійності, цілісності та передбачуваності.
Якщо розглядати безпеку, то як приклад спочатку порочної практики наводиться розрізненість засобів для чищення та нормалізації даних перед їхнім використанням у різних операціях, що є прекрасною підмогою для виникнення в застосунках вразливостей, що дозволяють здійснити підстановку SQL-коду або вбудовування JavaScript на сторінку. Згадки також заслуговує підхід «небезпечний за умовчанням», який тільки останнім часом став переглядатися розробниками PHP, наприклад, причиною безлічі вразливостей є використання register_globals і підтримка виконання зовнішнього коду за URL в директиві include. З проблем у самому інтерпретаторі відзначається спроба виправити у 2007 році цілочисельну вразливість через перевірку "if (size > INT_MAX) return NULL;"; помилка в реалізації функції crypt() в PHP 5.3.7 через яку можна було зайти з будь-яким паролем; DoS-уразливість в PHP 5.4, пов'язана з виділенням пам'яті на підставі переданого користувачем значення в HTTP-заголовку Content-Length.
Ліцензія
Ліцензія PHP має назву The [en] version 3.01
ЧАП за цією ліцензією [ 3 листопада 2015 у Wayback Machine.] та її текст [ 25 листопада 2005 у Wayback Machine.] можна знайти на офіційному сайті The PHP Group, а також файл із ліцензією містить дистрибутив PHP (звичайно license.txt).
Див. також
Примітки
- PHP 8.3.
- Version 8.3.2
- PHP 8.3.0 RC 6 available for testing.
- PHP: Preface - Manual
- Rasmus Lerdorf | PHP on Hormones — 2013.
- The php Open Source Project on Open Hub: Languages Page — 2006.
- http://php.net/license/
- https://fileinfo.com/extension/php
- https://www.php.net/manual/en/book.phar.php
- Usage statistics of server-side programming languages for websites.
- Andi Gutmans, Stig Bakken, Derick Rethans. PHP5 Power Programming. — Prentice Hall, 2005. — 704 с.
- . Архів оригіналу за 19 листопада 2015. Процитовано 27 січня 2019.
- . php.net. 7 липня 2014. Архів оригіналу за 3 липня 2017. Процитовано 15 липня 2014.
- . 30 липня 2014. Архів оригіналу за 24 липня 2018. Процитовано 30 липня 2014.
- . Архів оригіналу за 22 квітня 2021. Процитовано 22 квітня 2021.
- . Архів оригіналу за 22 квітня 2021. Процитовано 22 квітня 2021.
- . Архів оригіналу за 12 квітня 2021. Процитовано 22 квітня 2021.
- . Архів оригіналу за 13 жовтня 2020. Процитовано 4 травня 2021.
- . Архів оригіналу за 3 травня 2021. Процитовано 4 травня 2021.
- . Архів оригіналу за 20 жовтня 2007. Процитовано 26 жовтня 2007.
- Російський переклад: PHP: фрактал плохого дизайна [ 19 квітня 2012 у Wayback Machine.]
- (англ.)The PHP License, version 3.01 [ 22 травня 2020 у Wayback Machine.]
Посилання
- Офіційний сайт The PHP Group [ 7 листопада 2007 у Wayback Machine.] (англійською)
- Сайт Расмуса Лердорфа [ 1 січня 2012 у Wayback Machine.] (англійською)
- Ядро Zend, на якому побудовано PHP [ 6 листопада 2007 у Wayback Machine.] (англійською)
- Write PHP online [ 14 серпня 2015 у Wayback Machine.] — тестовий редактор php-коду.
Ця стаття має кілька недоліків. Будь ласка, допоможіть удосконалити її або обговоріть ці проблеми на .
|
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
PHP angl PHP Hypertext Preprocessor PHP gipertekstovij preprocesor poperednya nazva Personal Home Page Tools skriptova mova programuvannya bula stvorena dlya generaciyi HTML storinok na storoni vebservera PHP ye odniyeyu z najposhirenishih mov sho vikoristovuyutsya u sferi vebrozrobok razom iz Java NET JavaScript Python Ruby PHP pidtrimuyetsya perevazhnoyu bilshistyu hosting provajderiv PHP proyekt vidkritogo programnogo zabezpechennya PHPParadigmaimperativna ob yektno oriyentovana funkcionalnaData poyavi1995TvorciRasmus LerdorfRozrobnikThe PHP GroupOstannij reliz8 3 18 sichnya 2024 5 misyaciv tomu 2024 01 18 Testova versiyaPHP 8 3 0 RC 6 9 listopada 2023 7 misyaciv tomu 2023 11 09 Sistema tipizaciyislabka tipizaciya d dinamichna tipizaciya d i dPid vplivom vidC Perl 4 C 4 Java 4 Tcl 5 HTML i JavaScriptMova realizaciyiC 6 Operacijna sistemaUNIX podibni operacijni sistemi i WindowsLicenziyad 7 Zvichajni rozshirennya fajliv php 8 abo phar 9 Repozitorij vihidnogo kodugithub com php php srcVebsajtphp net Instrukciyi u Vikipidruchniku Mediafajli u Vikishovishi PHP interpretuyetsya vebserverom u HTML kod yakij peredayetsya na storonu kliyenta Na vidminu vid skriptovoyi movi JavaScript koristuvach ne bachit PHP kodu tomu sho brauzer otrimuye gotovij html kod Ce ye perevagoyu z tochki zoru bezpeki ale pogirshuye interaktivnist storinok Ale nihto ne zaboronyaye vikoristovuvati PHP dlya generuvannya JavaScript kodiv yaki vikonuyutsya vzhe na storoni kliyenta OsoblivostiPHP mova u kod yakoyi mozhna vbudovuvati bezposeredno html kod storinok yaki u svoyu chergu korektno obroblyuvatimutsya PHP interpretatorom Obrobnik PHP prosto pochinaye vikonuvati kod pislya vidkrivayuchogo tegu span class cp lt php span i prodovzhuye vikonannya do togo momentu poki ne zustrine zakrivayuchij teg Velika riznomanitnist funkcij PHP daye mozhlivist unikati napisannya bagatoryadkovih funkcij priznachenih dlya koristuvacha yak ce vidbuvayetsya v C abo Pascal Nayavnist interfejsiv do bagatoh baz danih u PHP vbudovani biblioteki dlya roboti z MySQL PostgreSQL SQLite Oracle Informix InterBase Sybase zavdyaki standartu vidkritogo interfejsu zv yazku z bazami danih angl Open Database Connectivity Standard ODBC mozhna pidklyuchatisya do vsih baz danih do yakih isnuye drajver Netradicijnist Mova PHP zdavatimetsya znajomoyu programistam sho pracyuyut u riznih oblastyah Bagato konstrukcij movi zapozicheni z S Perl Kod PHP duzhe shozhij na toj yakij zustrichayetsya v tipovih programah movami S abo Pascal Ce pomitno znizhuye pochatkovi zusillya pri vivchenni PHP PHP mova sho poyednuye perevagi Perl ta S i specialno spryamovana na robotu v Interneti mova z universalnim i zrozumilim sintaksisom I hocha PHP ye dosit molodoyu movoyu vona zdobula taku populyarnist sered web programistiv sho v nash chas ye najpopulyarnishoyu movoyu dlya stvorennya vebzastosunkiv skriptiv Nayavnist sircevogo kodu ta bezkoshtovnist Strategiya Open Source i rozpovsyudzhennya pochatkovih tekstiv program u masah bezsumnivno spravili spriyatlivij vpliv na bagato proyektiv v pershu chergu Linux hoch i uspih proyektu Apache silno pidkripiv poziciyi prihilnikiv Open Source Skazane vidnositsya i do istoriyi stvorennya PHP oskilki pidtrimka koristuvachiv zi vsogo svitu viyavilasya duzhe vazhlivim chinnikom u rozvitku proyektu PHP Uhvalennya strategiyi Open Source i bezkoshtovne rozpovsyudzhennya pochatkovih tekstiv PHP nadalo neocinennu poslugu koristuvacham Okrim cogo koristuvachi PHP v usomu sviti ye svogo rodu kolektivnoyu sluzhboyu pidtrimki i v populyarnih elektronnih konferenciyah mozhna znajti vidpovidi navit na najskladnishi pitannya Efektivnist Efektivnist ye duzhe vazhlivim chinnikom u programuvanni dlya seredovish rozrahovanih na bagato koristuvachiv do yakih nalezhit i web Vazhlivoyu perevagoyu PHP ye te sho cya mova nalezhit do interpretovanih Ce dozvolyaye obroblyati scenariyi z dostatno visokoyu shvidkistyu Za deyakimi ocinkami bilshist PHP scenariyiv osoblivo ne duzhe velikih rozmiriv obroblyayutsya shvidshe za analogichni yim programi napisani na Perl Prote hoch bi sho robili rozrobniki PHP vikonavchi fajli otrimani za dopomogoyu kompilyaciyi pracyuvatimut znachno shvidshe v desyatki a inodi i v sotni raziv Ale produktivnist PHP dostatnya dlya stvorennya cilkom serjoznih vebzastosunkiv IstoriyaPershi versiyi Istoriya PHP pochinayetsya z 1995 roku koli Rasmus Lerdorf angl Rasmus Lerdorf stvoriv prostij zastosunok movoyu Perl sho analizuvav vidviduvannya koristuvachami jogo rezyume na vebsajti Potim koli cim zastosunkom vzhe koristuvalisya kilka osib a chislo ohochih oderzhati jogo postijno zbilshuvalosya Lerdorf nazvav svoye tvorinnya Instrumenti dlya osobistoyi domashnoyi storinki angl Personal Home Page Tools versiya 1 i vistaviv dlya vilnogo zavantazhennya Z ciyeyi miti pochavsya nebuvalij zlit populyarnosti PHP Yak ce zavzhdi buvaye terminovo bulo potribne doopracyuvannya i novi dopovnennya Dlya yihnoyi realizaciyi Rasmus stvoryuye novu versiyu paketu teper uzhe napisanu na S Otrimanij takim chinom instrument nabuvaye robochoyi nazvi ukr Personalna Domashnya storinka Interpretator Form angl Personal Home Page Forms Interpreter nadali vin takozh bude vidomij pid nazvoyu Cya versiya vzhe bilshoyu miroyu shozha na sogodnishnij PHP Vona mala sintaksis i sposib imenuvannya zminnih u stili movi Perl mozhlivist vbudovuvannya PHP operatoriv v html kod storinki avtomatichnu interpretaciyu form integraciyu z bazami danih Pri comu vse pracyuvalo dosit shvidko oskilki PHP prikompilyuvalasya do vebservera Apache Do 1997 roku PHP vikoristovuvavsya vzhe na 50 000 domenah ne bilshe 1 vsih vebserveriv Togo zh 1997 roku do proyektu PHP pidklyuchilisya Zev Suraski angl Zeev Suraski i Endi Gutmans angl Andi Gutmans Ci studenti Tehnionu odnogo z najkrashih dzherelo izrayilskih universitetiv namagalisya vikoristovuvati PHP FI dlya odnogo z komercijnih universitetskih proyektiv Pri comu yim dovelosya zitknutisya z bagatma trudnoshami i obmezhennyami ciyeyi tehnologiyi Vivchayuchi pochatkovij kod PHP 2 Zev i Endi dijshli visnovku pro neobhidnist doopracyuvannya a tochnishe istotnoyi pererobki PHP osoblivo v plani sintaksisu movi Protyagom dekilkoh misyaciv voni bliskuche vporalisya z cim zavdannyam Zakinchivshi robotu Zev i Endi domovilis iz Rasmusom pro spivpracyu v galuzi rozvitku ta vdoskonalennya movi Z ciyeyi miti z yavlyayetsya PHP Group grupa odnodumciv sho pracyuyut nad rozvitkom tehnologiyi PHP Oderzhanij produkt z yavivsya na svit 1998 roku pid nazvoyu PHP 3 Pri comu golovnoyu osoblivist bula mozhlivist rozshirennya yadra sho privernulo do roboti nad PHP bezlich storonnih rozrobnikiv sho stvoryuyut specializovani moduli Yih nayavnist dala PHP mozhlivist pracyuvati z velicheznoyu kilkistyu baz danih protokoliv pidtrimuvati velike chislo API Do kincya 1998 roku kilkist koristuvachiv PHP perevishila 100 tisyach a PHP buv uzhe vstanovlenij na ponad 10 serverah Internetu Vodnochas znachnomu poshirennyu danoyi movi spriyali publikaciyi v elektronnij presi ta vidannya posibnikiv iz PHP Vidrazu zh pislya vihodu PHP 3 Endi Gutmans i Zev Suraski pochali pererobku yadra PHP Nasampered nalezhalo rozv yazati problemu pidvishennya produktivnosti Novij produkt nazvanij Zend Engine vid imen tvorciv Zeev i Andi uspishno spravlyavsya z postavlenim zavdannyam i buv realizovanij 1999 roku Osnovnimi realizovanimi ideyami ye mozhlivist kompilyaciyi scenariyu u vikonuvanij modul za rahunok chogo produktivnist mozhna bulo pidnyati na poryadok PHP 3 ta PHP 4 Zeyev Suraski ta Ani Gutmans pererobili analizator v 1997 roci i sformuvali bazu PHP 3 zminivshi nazvu movi na rekursivnij akronim PHP Hypertext Preprocessor Pislya cogo pochalosya publichne testuvannya PHP 3 a oficijnij zapusk vidbuvsya v chervni 1998 roku Pislya cogo Suraski ta Gutmans rozpochali nove perekoduvannya yadra PHP vidavshi Zend Engine u 1999 roci Voni takozh zasnuvali Zend Technologies v Ramat Gani Izrayil 22 travnya 2000 r Buv vipushenij z pidtrimkoyu Zend Engine 1 0 Stanom na serpen 2008 roku cya filiya dosyagla versiyi 4 4 9 PHP 4 bilshe ne rozroblyayetsya onovlennya bezpeki takozh bilshe ne buli vipusheni PHP 5 14 lipnya 2004 r Buv vipushenij PHP 5 z novim dvigunom Zend Engine II PHP 5 vklyuchav novi funkciyi yak ot pokrashena pidtrimka ob yektno oriyentovanogo programuvannya rozshirennya PHP Data Objects PDO yakij mistit legkij i poslidovnij interfejs dlya dostupu do baz danih ta chislenni polipshennya produktivnosti U 2008 roci PHP 5 stav yedinoyu stabilnoyu versiyeyu sho rozroblyalasya Piznij statichnij zv yazok vidsutnij u PHP i buv dodanij u versiyi 5 3 Bagato visokoprofesijnih proyektiv iz vidkritim kodom z 5 lyutogo 2008 roku perestali pidtrimuvati PHP 4 v novomu kodi oskilki ce iniciativa GoPHP5 sho nadayetsya konsorciumom rozrobnikiv PHP sho spriyaye perehodu vid PHP 4 do PHP 5 Z chasom interpretatori PHP stali dostupnimi dlya bilshosti isnuyuchih 32 rozryadnih ta 64 rozryadnih operacijnih sistem abo buduvali yih iz vihidnogo kodu PHP abo vikoristovuvali poperedno pobudovani dvonarni fajli Dlya versij PHP versiyi 5 3 ta 5 4 yedinimi dostupnimi dvostoronnimi distributivami Microsoft Windows buli 32 rozryadni versiyi x86 sho vimagayut 32 rozryadnij rezhim sumisnosti Windows pri vikoristanni informacijnih sluzhb Internetu IIS na 64 rozryadnij platformi Windows PHP versiyi 5 5 zrobiv zbirki 64 rozryadnih x86 64 dostupnimi dlya Microsoft Windows PHP 6 ta Unicode PHP otrimav zmishani vidguki cherez vidsutnist vlasnoyi pidtrimki Unicode na rivni osnovnoyi movi U 2005 roci buv zapochatkovanij proyekt ocholyuvanij Andriyem Zmiyevskim dlya zaluchennya ridnoyi pidtrimki Unicode na PHP shlyahom vbudovuvannya biblioteki Mizhnarodni komponenti dlya Unicode ICU ta vbudovanih tekstovih ryadkiv yak UTF 16 Oskilki ce prizvede do serjoznih zmin yak do vnutrishnoyi chastini movi tak i do kodu koristuvacha planuvalosya vipustiti jogo yak versiyu 6 0 movi razom z inshimi osnovnimi funkciyami yaki rozvivayutsya Prote deficit rozrobnikiv yaki zrozumili neobhidni zmini ta problemi produktivnosti sho vinikayut vnaslidok peretvorennya na UTF 16 ta z nogo sho ridko vikoristovuyetsya v vebkonteksti prizvelo do zatrimok proyektu Yak rezultat vipusk PHP 5 3 buv stvorenij u 2009 roci pri comu bagato ne Unicode funkcij bulo vidnovleno z PHP 6 zokrema prostoru imen U berezni 2010 roku proyekt u svoyij ninishnij formi buv oficijno vidkinutij i buv pidgotovlenij vipusk PHP 5 4 sho mistit bilshist opublikovanih funkcij sho ne vhodyat do Unicode z PHP 6 yak ot risi ta perepriv yazka do zakrittya Pochatkovi spodivannya polyagali v tomu sho dlya integraciyi z Unicode buv bi sformovanij novij plan ale z 2014 roku nihto ne buv prijnyatij PHP 7 Vprodovzh 2014 ta 2015 rokiv bulo rozrobleno novu osnovnu versiyu PHP yaku bulo pronumerovano PHP 7 Numeraciya ciyeyi versiyi viklikala debati Hocha reliz PHP 6 z Unicode nikoli ne buv vipushenij dekilka nazv statej i knig posilalisya na nazvu PHP 6 sho moglo viklikati plutaninu yakbi novij reliz povtorno vikoristovuvav cyu nazvu Pislya golosuvannya bulo obrano nazvu PHP 7 PHP 7 vijshla 3 grudnya 2015 roku i mistit taki klyuchovi novovvedennya Zavdyaki suttyevim dopracyuvannyam nova versiya dala pririst produktivnosti v 2 3 razi na realnih proyektah Mozhlivist deklaruvannya skalyarnih tipiv lt php function sumOfInts int ints return array sum ints Mozhlivist deklaruvati tip togo sho maye povernuti metod lt php function arraysSum array arrays array return array map function array array int return array sum array arrays Anonimni klasi lt php app new Application app gt setLogger new class implements Logger public function log string msg echo msg Dodani novi operaciyi a b analogichno is null a a b ta a lt gt b povidomlyaye chi bilshij menshij chi rivnij parametr a do b PHP 8 26 listopada 2020 roku vijshlo nova versiya php PHP 8 Sered klyuchovih novih mozhlivostej movi Imenovani argumenti lt php htmlspecialchars string double encode false Zamist anotacij PHPDoc teper vi mozhete vikoristovuvati strukturovani metadani z vlasnim sintaksisom PHP Opis vlastivostej na rivni konstruktora lt php class Point public function construct public float x 0 0 public float y 0 0 public float z 0 0 Ob yednannya tipiv lt php function foo int float a Operator nullsafe Yaksho yakijs ob yekt metod vlastivist ne viznachena todi rezultat bude null lt php country session gt user gt getAddress gt country JIT kompilyaciyaViznannya ta poshirennya sho pracyuye na comu yadri vijshov 2000 roku Na dodatok do zbilshennya produktivnosti PHP 4 mav novi mozhlivosti shodo pidtrimki sesij bezpechni sposobi obrobki informaciyi sho vvoditsya koristuvachem i novi Z vihodom 4 versiyi PHP stav vikoristovuvatisya vzhe na bilsh nizh 20 domeniv Internetu Protyagom 2000 2004 rokiv prodovzhuvalisya aktivni roboti z pokrashennya chetvertoyi versiyi ale majzhe vidrazu pristupila do produmuvannya mozhlivostej novoyi versiyi Nasampered bulo virisheno pidsiliti ob yektni mozhlivosti movi sho dozvolyalo vikoristovuvati jogo dlya realizaciyi masshtabnih proyektiv Roboti iz stvorennya p yatoyi versiyi velisya trivalij chas v nih bralo uchast rekordna kilkist fahivciv zokrema Sterling Hyuz angl Sterling Hughes i Markus Bergera angl Marcus Boerger U lipni 2004 roku vihodit oficijnij reliz PHP 5 U pershu chergu yak i planuvalosya bulo pererobleno ves mehanizm roboti z ob yektami I yaksho v poperednih versiyah ob yektno oriyentovane programuvannya na PHP bulo mozhlive v minimalnomu stupeni a tomu i vikoristovuvalosya na praktici ne chasto to PHP 5 volodiye prekrasnim dzherelo potencialom realizaciyi ob yektnogo programuvannya Okrim cogo PHP zbagativsya ryadom cinnih komu rozshiren dlya roboti z XML riznimi dzherelami danih generaciyi grafiki i inshe Sered inshih ukraj korisnih dopovnen v PHP 5 slid zaznachiti novu shemu obrobki vinyatkiv Konstrukciya try catch throw dozvolyaye ves kod obrobki pomilok lokalizuvati v odnomu misci scenariyu Vsi osnovni biblioteki dlya roboti z XML zapozicheni v PHP 4 buli piddani serjoznij pererobci Taki populyarni rozshirennya yak SAX DOM i XSLT teper vikoristovuyut instrument sho robit yih she efektivnishimi U PHP 5 takozh vklyucheni dva novi moduli dlya roboti z protokolami SimpleXML i SOAP SimpleXML dozvolyaye znachno sprostiti robotu z XML danimi predstavlyayuchi vmist XML dokumenta u viglyadi PHP ob yekta Rozshirennya SOAP dozvolyaye buduvati na PHP scenariyi sho obminyuyutsya informaciyeyu z inshimi zastosunkami za dopomogoyu XML povidomlen poverh isnuyuchih vebprotokoliv napriklad HTTP Modul dlya roboti z SOAP dlya PHP 5 nadaye rozrobnikam zasib dlya dostatno shvidkogo stvorennya efektivnih SOAP kliyentiv i SOAP serveriv Novij modul PHP 5 MySQLi MySQL Improved priznachenij dlya roboti z MySQL serverom versij 4 1 2 i vishe realizovuyuchi ne tilki procedurnij ale i ob yektno oriyentovanij interfejs do MySQL Dodatkovi mozhlivosti cogo modulya vklyuchayut SSL kontrol tranzakcij ta inshi Shosta versiya PHP rozroblyalasya z zhovtnya 2006 roku Bulo zrobleno bezlich novovveden yak napriklad viklyuchennya z yadra regulyarnih viraziv POSIX i dovgih superglobalnih masiviv vidalennya direktiv safe mode magic quotes gpc i register globals z konfiguracijnogo fajlu php ini Odnim z osnovnih novovveden povinna bula stati pidtrimka Yunikodu Odnak u berezni 2010 roku rozrobka PHP6 bula viznana bezperspektivnoyu cherez skladnoshi z pidtrimkoyu Yunikodu Vihidnij kod PHP6 peremishenij na gilku a osnovnoyu liniyeyu rozrobki stala versiya 5 4 U 2014 roci bulo provedeno golosuvannya za rezultatami yakogo nastupna versiya otrimala nazvu PHP 7 Vihid novoyi versiyi planuvavsya v seredini zhovtnya 2015 roku U berezni 2015 roku Zend predstavili infografiku v yakij opisani osnovni novovvedennya PHP 7 3 grudnya 2015 roku bulo ogolosheno pro vihid PHP versiyi 7 0 0 Nova versiya gruntuyetsya na eksperimentalnij gilci PHP yaka spochatku nazivalasya phpng PHP Next Generation nastupne pokolinnya i rozroblyalasya z nahilom na zbilshennya produktivnosti i zmenshennya spozhivannya pam yati U novij versiyi dodana mozhlivist vkazuvati tip povertayutsya z funkciyi danih dodanij kontrol peredanih tipiv dlya skalyarnih danih a takozh novi operatori SintaksisVidokremlennya PHP kodu vid HTML rozmitki Vsi scenariyi oformlyayutsya u viglyadi blokiv kodu Ci bloki mozhut buti pomisheni v HTML kod ale viddileni vid nogo vidpovidnimi obmezhuvachami Kod PHP v HTML povinen znahoditis mizh pochatkovim tegom span class cp lt php span ta kincevim span class cp gt span abo mizh lt script language php gt ta lt script gt Bazhanim variantom vidilennya PHP kodu ye variant span class cp lt php span span class cp gt span oskilki same taki pochatkovij ta kincevij tegi dozvolyat vikoristovuvati PHP kod u dokumentah yaki vidpovidayut pravilam XML Takozh mozhna vikoristovuvati skorochenij zapis span class o lt span span class cp gt span inkoli potribno aktivizuvati danij stil u fajli nalashtuvan interpretatora php ini zminna span class na short open tag span povinna mati znachennya span class na On span i zapisom u stili ASP span class o lt span span class o gt span v php ini zminna span class na asp tags span povinna mati znachennya span class na On span Prote stil ASP ne rekomenduyetsya i ochikuyetsya sho vin bude vidsutnij u dzherelo Najprostisha programa Hello world na PHP viglyadaye tak lt php echo Hello world gt PHP vikonuye kod sho znahoditsya v seredini na kshtalt span class cp lt php span span class cp gt span Vse sho znahoditsya poza obmezhuvachami vivoditsya bez zmin Takim chinom vikonuyetsya vstavka PHP kodu v HTML kod Napriklad kod html storinki z poperednim prikladom viglyadatime tak lt html gt lt head gt lt title gt Testuyemo PHP lt title gt lt head gt lt body gt lt php echo Hello world gt lt body gt lt html gt Vidokremlennya instrukcij Instrukciyi v PHP vidokremlyuyutsya simvolom span class p span Pered zakinchennyam skriptu pered tegom span class cp gt span krapku z komoyu staviti neobov yazkovo Komentari Komentari u PHP mozhut buti yak odnoryadkovi tak i bagatoryadkovi Odnoryadkovi komentari pochinayutsya z span class c1 span abo span class c1 span komentar skriptovih mov UNIX Bagatoryadkovi komentari pochinayutsya simvolami span class o span i zakinchuyutsya span class o span Slid zaznachiti sho odnoryadkovi komentari jdut abo do kincya potochnogo ryadka abo do zavershalnogo tegu span class cp gt span Napriklad ce odnoryadkovij komentar i ce takozh odnoryadkovij komentar a os ce vzhe bagatoryadkovij komentar Zminni Dokladnishe Zminna Osnovoyu bud yakogo programuvannya ye zminni PHP yak i deyaki inshi UNIX skriptovi movi ne potrebuye yih opisu Isnuye tri stili oformlennya zminnih u PHP korotkij stil zminni zapisuyutsya u viglyadi span class nv variable span Vikoristovuyetsya v bilshosti vipadkiv Zminna yaka stvoryuyetsya programnim kodom zapisuyetsya takim chinom Mozhlivo takozh vikoristannya takogo stilyu dlya dobuvannya zminnoyi iz FORMI yaksho vvimkneno span class na register globals span u fajli konfiguraciyi php ini serednij stil span class nv POST span span class p span span class s1 variable span span class p span span class nv GET span span class p span span class s1 variable span span class p span span class nv REQUEST span span class p span span class s1 variable span span class p span Vikoristovuyetsya dlya otrimannya danih iz poliv FORMI Zalezhno vid tipu peredachi danih ustanovlyuyetsya POST abo GET abo REQUEST dlya oboh vipadkiv Dani zminni nazivayutsya takozh globalnimi dovgij stil span class nv HTTP POST VARS span span class p span span class s1 variable span span class p span span class nv HTTP GET VARS span span class p span span class s1 variable span span class p span Najpovnishij stil zapisu i najmensh vikoristovuvanij Pochinayuchi z PHP 5 ci zminni mozhna vimknuti Vikoristovuvati zminni takogo tipu ne rekomendovano zadlya krashoyi sumisnosti iz majbutnimi versiyami PHP Priklad zapisu zminnoyi z desyatkovim drobom ta ryadkovoyi zminnoyi php Z tochki zoru sistemi tipizaciyi PHP ye movoyu programuvannya z dinamichnoyu tipizaciyeyu Nemaye neobhidnosti yavnogo viznachennya tipu zminnih hocha taka mozhlivist isnuye U razi zvernennya do zminnoyi interpretator PHP tlumachit yiyi tip vidpovidno do kontekstu Za neobhidnosti mozhlive privedennya zminnoyi do pevnogo tipu za dopomogoyu vidpovidnih konstrukcij movi Ce mozhe znadobitis yaksho zvazhiti sho znachennya zminnoyi mozhut traktuvatis po riznomu v zalezhnosti vid yiyi tipu Takozh mozhlive viznachennya tipu vidpovidnoyi zminnoyi na pevnomu etapi vikonannya scenariyu Imena zminnih chutlivi do registru simvoliv Tipi danih Dokladnishe Tip danih Do bazovih tipiv nalezhat bulevi dani cili ta dijsni chisla z ruhomoyu komoyu a takozh ryadki Bulevi dani virazhayut istinnist znachennya Cili chisla mozhut buti podani u dvijkovomu visimkovomu desyatkovomu ta shistnadcyatkovomu viglyadi Rozmir cilogo chisla mozhe zminyuvatis zalezhno vid platformi zazvichaj rozryadnist stanovit 32 biti PHP ne pidtrimuye bezznakovi cili chisla Dijsni chisla z ruhomoyu komoyu mozhut buti podani v desyatkovij abo eksponencijnij formi Dlya kozhnoyi zminnoyi mozhna nadati vlasnij tip danih Dlya cogo isnuye dekilka vidiv pershij vid nadannya zminnij tipu danih var1 true var2 1abc var3 abc1 settype var1 string vidast ryadok 1 settype var2 integer vidast chislo 1 settype var3 bool vidast true drugij tip nadannya zminnij tipu danih var1 int var1 1abc echo var1 vidast chislo 1 Robota z ryadkami Ryadki dilyat na dva klasi ryadki sho pidlyagayut analizu ta ti sho ne pidlyagayut Pershij klas doslidzhuyetsya interpretatorom na nayavnist posilan na inshi zminni i za umovi yihnoyi nayavnosti robitsya pidstanovka znachen u vidpovidne misce Krim togo klas dozvolyaye provoditi manipulyaciyi z kerivnimi simvolami Simvol ryadka mozhe mati lishe odne z 256 znachen ale ye mozhlivist pracyuvati z bagatobajtovimi simvolami Dostup do simvoliv ryadka mozhlivij iz vikoristannyam sintaksisu shozhogo na dostup do elementiv masiviv PHP nadaye shirokij spektr funkcij dlya poshuku ta zamini tekstu v ryadkah Dlya cogo vikoristovuyut yak tradicijnij pidhid tak i specialnij sho bazuyetsya na vikoristanni regulyarnih viraziv Pri comu v movi realizovana pidtrimka dvoh vidiv regulyarnih viraziv Perl sumisni ta POSIX sumisni sho rozriznyayutsya za sintaksisom ta osoblivostyami roboti Zmishani tipi danih Do nalezhat masivi heshi ta ob yekti Masivi z poglyadu movi programuvannya ye vporyadkovanimi naborami odnotipnih zminnih Vimoga odnotipnosti napovnennya masiviv ne stavitsya Tehnichno masivi ce vporyadkovani karti sho vidobrazhayut klyuchovi znachennya na poziciyi zminnih danih Vmistom znachennya na yake vkazuye klyuch mozhe buti bud chim sho mozhna podati u viglyadi zminnoyi Ne isnuye zhodnih obmezhen krim obsyagu pam yati sho nakladayutsya na kilkist klyuchiv masivu Osoblivistyu movi ye vidmova vid rivnomirnogo rozpodilu klyuchiv masiviv Realizovano i model bagatovimirnih masiviv prichomu bez yavnogo obmezhennya glibini vkladenosti Korisnoyu vlastivistyu PHP ye mozhlivist asociaciyi masiviv iz funkciyeyu zvorotnogo vikliku Ci funkciyi dozvolyayut provoditi diyi nad odnim chi kilkoma masivami v paketnomu rezhimi PHP nadilenij velikoyu kilkistyu funkcij roboti z masivami U PHP mozhna po riznomu ogoloshuvati masivi pershij vid var array key gt value stvorit masiv array print r var Array key gt value drugij vid var 0 0 var 1 Hello World var key Inshij ryadok print r var Array 0 gt 0 1 gt Hello World key gt Inshij ryadok tretij vid var string var 24081991 var 25 00 print r var Array 0 gt string 2 gt 24081991 3 gt 25 00 Chetvertij vid dostupnij z PHP 5 4 var foo gt bar print r var Array foo gt bar Takozh isnuyut dva specialni tipi danih resurs ta NULL Resurs specialna zminna sho mistit posilannya na zovnishnij resurs Resursi stvoryuyutsya ta vikoristovuyutsya v specializovanih funkciyah Oskilki tip mistit specialni vkazivniki na vidkriti fajli angl include ta inshe to bud yaki diyi nad znachennyam resursu ne mayut sensu Oblast vidimosti zminnoyi seredovishe v yakij vona viznachena Rozriznyayut lokalni ta globalni zminni Za zamovchuvannyam vsi zminni mayut lokalnij harakter diyi Vidilyayut osoblivij tip zminnih statichni sho dozvolyaye povtorne zvernennya do zminnoyi v pevnomu segmenti kodu prichomu zminna bude zberigati poperedno otrimane znachennya Isnuye takozh ponyattya superglobalnih zminnih yaki ye miscem zberezhennya danih otochennya abo danih otrimanih zzovni Pidtrimuyetsya koncepciya dinamichnih zminnih ta funkcij Konstanti u PHP prostih znachen Mozhlive viznachennya konstanti prichomu pislya yiyi ogoloshennya staye nemozhlivoyu zmina yiyi znachennya chi anulyuvannya Konstanti mozhut mati lishe znachennya Pidtrimuyetsya mozhlivist otrimannya znachennya konstanti za dinamichnim im yam Oblast vidimosti konstant ye globalnoyu dlya scenariyu ta vsih pid yednanih komponentiv Takozh u yadri movi viznacheno chimalo sistemnih konstant Konstrukciyi movi Operatori z poglyadu movi programuvannya dozvolyayut vikonuvati vidpovidnu diyu nad odnim chi kilkoma operandami Operatori buvayut troh tipiv unarni binarni ta ternarni Operatori yak i v inshih movah harakterizuyutsya ne lishe diyeyu a j asociativnistyu ta Osoblivistyu bulevih operacij porivnyannya rozriznennya dvoh klasiv z urahuvannyam tipu i bez nogo pri yakomu vidbuvayetsya privedennya do vidpovidnogo tipu Okruglennya vidbuvayetsya zavzhdi v menshij bik U movi realizovani osoblivi klasi operatoriv vikonannya upravlinnya pomilkami ta perevirki nalezhnosti do klasu Funkciyi z poglyadu movi programuvannya ye kontejnerami kodu prichomu mozhlive vklyuchennya inshih funkcij ta klasiv Na comu i bazuyetsya mozhlivist umovnogo viznachennya funkciyi U comu vipadku visuvayetsya vimoga poperednoyi deklaraciyi viklikanoyi funkciyi sho ne obov yazkove v inshih vipadkah Mozhlivosti pereviznachennya chi deaktivaciyi funkciyi ne isnuye Rezultat yakij povertaye funkciya mozhe mati bud yakij tip U movi realizovana funkcionalnist posilan Mozhlivo stvoriti neobmezhenu kilkist psevdonimiv sho posilayutsya na yedinij segment danih Pri vivilnenni bud yakogo z psevdonimiv segment danih zalishayetsya v pam yati do momentu zavershennya scenariyu abo vivilnennya usih posilan Natomist prijnyatogo v bagatoh movah principu perevantazhennya funkcij sho dozvolyaye zminiti hid vikonannya pevnoyi funkciyi zalezhno vid tipu ta kilkosti vhidnih parametriv u PHP vikoristovuyetsya metod dinamichnih argumentiv Ce daye zmogu ne viznachati kilkist parametriv funkcij pri yih ogoloshenni a pracyuvati z timi argumentami yaki buli otrimani na moment vikliku funkciyi U tili funkciyi mozhlivo otrimati kilkist peredanih yij argumentiv i provoditi vidpovidni manipulyaciyi Pri ogoloshenni funkciyi zvichajnim chinom mozhlive zadannya znachen argumentiv za zamovchuvannyam Funkciyi mozhut povertati lishe odne znachennya prote ce obmezhennya mozhna ominuti vikoristavshi ne lishe masivi a j posilannya Peredacha argumentiv za posilannyam nemozhliva pid chas vikonannya ta ogoloshennya funkciyi Pislya vikonannya scenariyiv prostir pam yati zajmanoyi nimi ochishuyetsya zbirachem smittya Prote za potrebi mozhlive vlasnoruch kerovane vikonannya ochishennya pam yati vid nadlishkovih segmentiv danih pid chas vikonannya skriptiv ale vikoristannya funkcij ochishennya pam yati ne ye vipravdanim hocha taka mozhlivist isnuye Dlya pobudovi programnih kompleksiv mozhna vikoristovuvati modulnij pidhid vikonuyuchi rozdilennya riznoridnogo kodu Pri potrebi mozhlive vikonannya pid yednannya neobhidnih moduliv prichomu operaciya vikonannya mozhe buti i umovnoyu Pid yednani do skriptu fajli mozhut povertati znachennya Dodatkovi mozhlivostiMova yavno pidtrimuye HTTP cookies vidpovidno do specifikacij Netscape Ce daye zmogu provoditi vstanovlennya ta chitannya nevelikih segmentiv danih na storoni kliyenta PHP nadaye mozhlivist organizaciyi roboti z koristuvachem vprodovzh seansiv sesij U sesiyi mozhna zberigati rizni dani vklyuchayuchi ob yekti Stvorennya GUI dodatkiv PHP ne oriyentovanij na stvorennya dodatkiv ale ye potreba stvorennya interfejsiv zadlya nalashtuvan serveriv bezperervnogo vikonannya nalagodzhennya skriptiv scenariyiv keruvannya lokalnih testovih serveriv tosho Cherez ce j vinikli rozv yazannya problemi Rozshirennya Osnovna sered realizacij vikoristannya rozshiren sho faktichno ye nadlashtunkami dlya UI bibliotek Zagalom rozshirennya viokremlyuyutsya na tri tipi php rozshirennya obgortki rozshirennya sho vikoristovuyut sistemni funkciyi cherez tehnologiyu ta konsolni obgortki rozshirennya sho spilkuyutsya iz php bezposeredno cherez komandnij interfejs Do pershih mozhna vidnesti WxPHP 22 sichnya 2019 u Wayback Machine Windows Linux Mac OS X Winbinder 3 bereznya 2019 u Wayback Machine Windows Do drugih vidnosyatsya Win32Std 17 listopada 2019 u Wayback Machine Tk 28 listopada 2018 u Wayback Machine realizaciya dlya Python Do tretih nalezhat PHP UI 11 grudnya 2018 u Wayback Machine PHP XCB 4 sichnya 2017 u Wayback Machine Takozh ye rozshirennya sho stanovit soboyu dvostoronnyu obgortku yak vikoristannya inshih mov dlya rozshirennya php tak i navpaki PSV Component Library proyekt sho skladayetsya iz troh sub proyektiv PHP4Delphi 11 chervnya 2018 u Wayback Machine osnovnij proyekt avtor Sergij Perevoznyuk Realizaciya poyednannya php iz Delphi programoyu cherez zasobi WinAPI aktivno rozroblyuvalosya z 1999 roku ale cherez zajnyatist avtora ne onovlyuvalosya vzhe 4 roki cherez sho z yavilisya forki vidgaluzhennya z onovlennyami yaki mozhna pereglyanuti za posilannyam https github com perevoznyk php4delphi network 11 chervnya 2018 u Wayback Machine odnim iz takih ye PHP4Lazarus 11 chervnya 2018 u Wayback Machine Proyekt PHP extensions development framework drugoryadnij Zasobi dlya stvorennya php rozshiren VCL komponenti hoch cej proyekt i viokremlyuye avtor ale vin ye neviddilnoyu chastinoyu PHP4Delphi 11 chervnya 2018 u Wayback Machine bazovi komponenti yakogo mayut buti vikoristani dlya stvorennya zastosunkiv Proyekt php4Applications drugoryadnij rozshirennya dlya inshih mov sho daye mozhlivist legko vikoristovuvati php u C C Lazarus Delphi C bazuyetsya na PHP4Delphi 11 chervnya 2018 u Wayback Machine nadaye dostup do sho sproshuyut vikoristannya php i pozbavlyayut potrebi napisannya vlasnoyi obgortki Seredovisha rozrobki grafichnih interfejsiv Ale ye misce j povnocinnim seredovisham rozrobki iz mozhlivistyu stvorennya program DevPHP IDE Pionerom u cij kategoriyi ye studiya DevPHP IDE sho vikoristovuvala Kylix Delphi yak osnovnij interfejs ta php Cli zadlya stvorennya koristuvackih program Vona mistila redaktor kodu dekilka instrumentiv ta vizualnij pereglyad HTML storinok Upershe bula predstavlena u 2002 roci narazi maye 3 stabilni versiyi rozrobka ne trivaye zupinilasya cherez zagibel gol rozrobnika v avtokatastrofi CodeGear Rad Studio Extension Pislya neyi z yavilosya rozshirennya nabir komponentiv dlya CodeGear Rad Studio 2009 na bazi php4delphi z deyakimi pokrashennyami vebelementi inspektor znevadzhuvach trivala yiyi pidtrimka protyagom 4 versij druga z yakih uvijshla v platne dopovnennya Rad Studio 2010 Bula mozhlivist vikoristovuvati skripti nadavati stil vebkomponentam pereglyadati stili i vebstorinku do zbirki programi zapuskati lokalnij server zbirati programu yak okremij zastosunok ta nalagodzhuvati kod Pochinayuchi z tretoyi versiyi rozshirennyu studiyi dali nazvu PHPDev Xe zgodom Delphi zaznala perevtilen i rozrobku PHPDev Xe bulo prizupineno na neviznachenij termin DevelStudio RAD U 2009 roci na bazi togo samogo rozshirennya z yavilasya studiya zgodom do rozrobki studiyi MessBox DVI priyednavsya Rostislav Romanov i vona zminila nazvu na persha versiya z takoyu nazvoyu 0 1 7 mala neveliku kilkist komponentiv u nabori instrumentiv i pidtrimuvala lishe php 4 U 2 j versiyi otrimala pidtrimku php 5 buli dobavleni potoki ta vneseni chislenni zmini Kod zbirki generaciyi program bulo zakrito a poperedni versiyi yak i forum samoyi programi zaterto z metoyu pereshkodzhannya zlovmisnikam Takozh druga versiya bula integrovana z naborom komponentiv AlphaControls 12 kvitnya 2022 u Wayback Machine cherez yakij problema iz virusami zdobula nechuvanogo masshtabu seredovishe programuvannya stalo shiroko vzhivanim sered pochatkivciv hakeriv ta populyarni na toj chas antivirusi MacAffie AVG Avira vklyuchili stab seredovisha do arhivu virusiv cherez sho koristuvatisya neyu stalo nemozhlivo Cherez deyakij chas avtor AlphaControls 12 kvitnya 2022 u Wayback Machine zvernuvsya zi skargoyu do rozrobnikiv j nabir komponentiv bulo povnistyu virizano z seredovisha ale z novih versij u cej raz vidaliti posilannya na poperedni versiyi ne vdalosya forum buv nezadovolenij U 3 j versiyi seredovisha z yavilisya novi komponenti v tomu chisli j brauzer Chromium zamist IE sho zoseredilo uvagu vebrozrobnikiv j koristuvachiv seredovisha Algoritm shozha ideya programuvannya na movi HTML Na toj moment kompilyaciya program u Algoritmi bula platna tomu yak nove i bezkoshtovne seredovishe rozrobki peremanila na sebe bilshist auditoriyi Z vihodom versiyi 3 0 2 2012 rik rozrobka seredovisha zupinilasya golovnij rozrobnik utrativ sirci pochatkovi kodi Z cogo chasu pochalisya namagannya vidroditi proyekt pershim uzyavsya ForumRules ale jogo namagannya viyavilisya marnimi Pislya publikaciyi sirciv sho zalishilisya u 2014 roci pochalisya pershi kroki po vidnovlennyu bulo zibrano versiyu sho pracyuvala z proyektami Lishe naprikinci 2018 roku ves pochatkovij kod 28 kvitnya 2019 u Wayback Machine bulo vidnovleno vin buv uzyatij za osnovu inshoyi studiyi PDL Project Development Laboratory piznishe PHP DL Pislya zvernennya u 2019 roci do avtora shodo zmini politiki poshirennya studiyi ta skargoyu na vidsutnist posilan na vikoristani biblioteki DCEF PHP4Delphi TSizeCtrl SynEdit forum bulo vidaleno a odnu z storinok z opisom proyektu perespryamovano na golovnu storinku PHPQt IDE U 2015 roci Oleksandr Kazancev pochav vivchati algoritmi rozrobki interfejsiv j stvoriv rozshirennya php qml 11 chervnya 2018 u Wayback Machine sho davalo zmogu stvoryuvati vidzheti z biblioteki QT ale malo pidtrimku lishe na Windows Z cogo pochalasya rozrobka PHPQt 1 kvitnya 2022 u Wayback Machine pershi versiyi ne viyavlyali do sebe interesu z storoni vebrozrobnikiv tomu avtor pochav poglibleno dopracovuvati rozshirennya 28 lipnya 2015 roku buv opublikovanij pershij variant kompilyatora proyektiv na toj moment ce buv prostij vikonuvach skriptiv sho prikriplyav php kod do stabu yak DevelStudio i mav zalezhnist vid WinAPI gt Windows na cij vzhe stadiyi pidtrimuvalisya majzhe vsi vidzheti j bagatopotokovist bula optimizaciya php kodu Z cogo momentu dvigun nazvali PQEngine 3 serpnya 2016 roku vijshla p yata versiya kompilyatora zastosunkiv PqBuilder sho perejshov na bazu PlastiQ j mav pidtrimku vzhe novitnogo na toj chas php 7 proyekti otrimali bilsh povnocinnij kompilyator i vzhe ne potrebuvali nayavnosti PqEngine dll poblizu z vikonuvanim fajlom natomist vizualni biblioteki stali dodavatisya statichno yak fajli a ne vshivatisya useredinu programi Takij krok buv prijnyatij zadlya sumisnosti z inshimi sistemami ta originalnimi bibliotekami Qt Z poyavoyu shostoyi versiyi proyekt stav dopovnennyam do studiyi Qt Studio a kompilyator stav usogo lishe optimizatorom pered kincevoyu zborkoyu programi Z yavivsya povnocinnij redaktor interfejsu pidkazki v redaktori koda ta pochala stvoryuvatisya dokumentaciya Z cogo momentu zrobili anons shodo stvorennya PqStudio ale yiyi rozrobka ne zajshla daleko DevelNext IDE Paralelno iz cim golovnij rozrobnik DevelStudio pochav stvoryuvati nove seredovishe programuvannya iz staroyu ideyeyu DevelNext 11 chervnya 2016 u Wayback Machine studiya vzyala za osnovu grafichnu biblioteku Swing ta JavaFX v rezultati vijshlo povnistyu nove seredovishe iz pidtrimkoyu CSS ale povnistyu bez pidtrimki PHP proyekt buv zasnovanij na vlasnij movi programuvannya takozh interpretovuvanij jPHP i proisnuvav u comu viglyadi do 17 yi versiyi 17 RC1 na yakij proyekt i buv pokinutij U 16 j versiyi seredovishe DevelNext otrimalo pidtrimku php 7 j bula rozshirena entuziastami dlya rozrobki na OS Android Pidklyuchennya PHP do proyektu Takozh isnuyut rozshirennya dlya geometralno protilezhnogo zastosuvannya pidklyuchennya PHP do proyektu na inshij movi programuvannya Phalanger 1 travnya 2019 u Wayback Machine C php 5 4 Peachpie 20 lipnya 2019 u Wayback Machine C php 7 PHP4Delphi 11 chervnya 2018 u Wayback Machine Lazarus Delphi C C C php 5 6 JPHP 5 zhovtnya 2018 u Wayback Machine Java php 7 0 PHPly 11 chervnya 2018 u Wayback Machine Python php 5 6Seredovisha rozrobki PHPVIM tekstovij redaktor Dlya cogo redaktora ye velika kilkist plaginiv yaki dodayut pidsvitku sintaksisu avtodopovnennya kodu perevirku pomilok sintaksisu i bagato inshih mozhlivostej dlya redaguvannya kodu Nedoliki PHPNezruchnist dizajnu movi dzherelo Zminni z simvolom span class err span Skladni nazvi poshirenih funkcij span class nb html entity decode span span class nb mysql select db span span class nb nl2br span tosho Ne pidtrimuyetsya Unicode u versiyah do 6 0 Neperedbachuvanist novih versij PHP KritikaU statti PHP a fractal of bad design 21 kvitnya 2012 u Wayback Machine predstavlenij dokladnij i gruntovnij oglyad problem u dizajni movi programuvannya PHP Avtor pokazuye vinyatkovist PHP yak odnoyi z najbilsh neopracovanih mov problemi v yakij mayut sistematichnij harakter Zokrema u statti prodemonstrovani problemi v samij movi biblioteci funkcij strukturah mehanizmah roboti z danimi ekosistemi zasobah znevadzhennya Vkazani nedorobki v bezpeci nadijnosti cilisnosti ta peredbachuvanosti Yaksho rozglyadati bezpeku to yak priklad spochatku porochnoyi praktiki navoditsya rozriznenist zasobiv dlya chishennya ta normalizaciyi danih pered yihnim vikoristannyam u riznih operaciyah sho ye prekrasnoyu pidmogoyu dlya viniknennya v zastosunkah vrazlivostej sho dozvolyayut zdijsniti pidstanovku SQL kodu abo vbudovuvannya JavaScript na storinku Zgadki takozh zaslugovuye pidhid nebezpechnij za umovchannyam yakij tilki ostannim chasom stav pereglyadatisya rozrobnikami PHP napriklad prichinoyu bezlichi vrazlivostej ye vikoristannya register globals i pidtrimka vikonannya zovnishnogo kodu za URL v direktivi include Z problem u samomu interpretatori vidznachayetsya sproba vipraviti u 2007 roci cilochiselnu vrazlivist cherez perevirku if size gt INT MAX return NULL pomilka v realizaciyi funkciyi crypt v PHP 5 3 7 cherez yaku mozhna bulo zajti z bud yakim parolem DoS urazlivist v PHP 5 4 pov yazana z vidilennyam pam yati na pidstavi peredanogo koristuvachem znachennya v HTTP zagolovku Content Length LicenziyaLicenziya PHP maye nazvu The en version 3 01 ChAP za ciyeyu licenziyeyu 3 listopada 2015 u Wayback Machine ta yiyi tekst 25 listopada 2005 u Wayback Machine mozhna znajti na oficijnomu sajti The PHP Group a takozh fajl iz licenziyeyu mistit distributiv PHP zvichajno license txt Div takozhSpisok redaktoriv PHP Zend Technologies HTMLPrimitkiPHP 8 3 Version 8 3 2 PHP 8 3 0 RC 6 available for testing PHP Preface Manual Rasmus Lerdorf PHP on Hormones 2013 The php Open Source Project on Open Hub Languages Page 2006 d Track Q124688 http php net license https fileinfo com extension php https www php net manual en book phar php Usage statistics of server side programming languages for websites Andi Gutmans Stig Bakken Derick Rethans PHP5 Power Programming Prentice Hall 2005 704 s Arhiv originalu za 19 listopada 2015 Procitovano 27 sichnya 2019 php net 7 lipnya 2014 Arhiv originalu za 3 lipnya 2017 Procitovano 15 lipnya 2014 30 lipnya 2014 Arhiv originalu za 24 lipnya 2018 Procitovano 30 lipnya 2014 Arhiv originalu za 22 kvitnya 2021 Procitovano 22 kvitnya 2021 Arhiv originalu za 22 kvitnya 2021 Procitovano 22 kvitnya 2021 Arhiv originalu za 12 kvitnya 2021 Procitovano 22 kvitnya 2021 Arhiv originalu za 13 zhovtnya 2020 Procitovano 4 travnya 2021 Arhiv originalu za 3 travnya 2021 Procitovano 4 travnya 2021 Arhiv originalu za 20 zhovtnya 2007 Procitovano 26 zhovtnya 2007 Rosijskij pereklad PHP fraktal plohogo dizajna 19 kvitnya 2012 u Wayback Machine angl The PHP License version 3 01 22 travnya 2020 u Wayback Machine PosilannyaPHP u sestrinskih VikiproyektahPortal Programuvannya Teksti u Vikipidruchniku Fajli u Vikishovishi Oficijnij sajt The PHP Group 7 listopada 2007 u Wayback Machine anglijskoyu Sajt Rasmusa Lerdorfa 1 sichnya 2012 u Wayback Machine anglijskoyu Yadro Zend na yakomu pobudovano PHP 6 listopada 2007 u Wayback Machine anglijskoyu Write PHP online 14 serpnya 2015 u Wayback Machine testovij redaktor php kodu Cya stattya maye kilka nedolikiv Bud laska dopomozhit udoskonaliti yiyi abo obgovorit ci problemi na storinci obgovorennya Cya stattya mistit tekst sho ne vidpovidaye enciklopedichnomu stilyu Bud laska dopomozhit udoskonaliti cyu stattyu pogodivshi stil vikladu zi stilistichnimi pravilami Vikipediyi Mozhlivo storinka obgovorennya mistit zauvazhennya shodo potribnih zmin zhovten 2017 Cya stattya potrebuye dodatkovih posilan na dzherela dlya polipshennya yiyi perevirnosti Bud laska dopomozhit udoskonaliti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Zvernitsya na storinku obgovorennya za poyasnennyami ta dopomozhit vipraviti nedoliki Material bez dzherel mozhe buti piddano sumnivu ta vilucheno zhovten 2017