PHP (мова програмування) - Вікіпедія

# PHP (мова програмування)

### Матеріал з Вікіпедії — вільної енциклопедії.

PHP (PHP Hypertext Preprocessor) — скриптова мова програмування, була створена для генерації HTML-сторінок на стороні веб-серверу. PHP є однією з найпоширеніших мов, що використовуються у сфері веб-розробок (разом із Perl, С# (ASP.NET), Python). PHP підтримується переважною більшістю хостинг-провайдерів. Проект за яким був створений PHP - проект з відкритими програмними кодами.

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

## [ред.] Короткий опис мови

- Деякі переваги мови:
  - Простота синтаксису
  - Наявність інтерфейсів до багатьох баз даних
    - в PHP вбудовані бібліотеки для роботи з MySQL, PostgreSQL, mSQL, Oracle, dbm, Hyperware, Informix, InterBase, Sybase.
    - А через стандарт відкритого інтерфейсу зв'язку з базами даних(Open Database Connectivity Standart - ODBC) можна підключатися до всіх баз даних, до яких існує драйвер.
  - Безкоштовність
  - Наявність вихідного коду

## [ред.] Докладний опис мови

З точки зору типізації, PHP є вільно типізованою мовою програмування. Немає необхідновсті явного визначення типу змінних, хоча така можливість існує. В разі звернення до змінної, ядро PHP трактує її тип відповідно до контексту. За необхідності можливе приведення змінної до певного питу за допомогою відповідних конструкцій мови. Це може знадобитись, якщо зважити, що значення змінної можуть трактуватись по-різному в залежності від її типу. Також можливе визначення типу відповідної змінної на певному етапі виконання сценарію. Імена змінних чутливі до регістру символів.

До базових типів належать булеві дані, цілі та дійсні числа із плаваючою комою, а також стрічки. Булеві дані виражають істинність значення. Цілі числа можуть бути подані у вісімковому, десятковому та шістнадцятковому вигляді. Розмір цілого числа може зміньватись залежно від платформи, як правило, розрядність становить 32 біти. PHP не підтримує беззнакові цілі числа. Дійсні числа із плаваючою комою можуть бути подані в десятковій або експоненційній формі. Стрічки розділяють на два класи - стрічки, що підлягають аналізу, та стрічки, що не підлягають аналізу. Перший клас досліджується інтерпретатором на наявність посилань на інші змінні і за умови їх наявності, відбувається підстановка значень у відповідне місце. Крім того, клас дозволяє проводити маніпуляції із керуючими символами. Символ стрічки може мати лише одне із 256 значень, але існує можливість працювати із багатобайтовими символами. Доступ до символів стрічки можливий з використанням синтаксису, схожого на доступ до елементів масивів.

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

До змішаних типів належать масиви, хеші та об"єкти. Масиви в сенсі мови є наборами змінних, що згруповані в єдину змінну. Вимога однотипності наповнення масивів не ставиться. Технічно, масиви являють собою впорядковані карти, що відображіють юлючові значення на позиції змінних даних. Вмістом значення, на яке вказує ключ може бути будь-чим, що можна подати у вигляді змінної. Не існує жодних обмежень, крім об"єму пам"яті, що накладаються на кількість ключів масиву.

Особливістю мови є відмова від рівномірного розподілу ключів масивів. Знайшла реалізацію і модель багатовимірних масивів, причому без явного обмеження глибини вкладеності. Корисною властивістю PHP є можливість асоціації масивів із функцією зворотнього виклику. Ці функції дозволяють проводити дії над одним чи кількома масивами в пакетному режимі.

Також, існують два спеціальні типи даних - ресурс та NULL. Ресурс - спеціальна змінна, що містить посилання на зовнішній ресурс. Ресурси створюютьсята використовуються в спеціалізованих функціях. Оскільки тип містить спеціальні вказівники на відкриті файли, під"єднання та інше, то будь-які дії над значенням ресурсу не мають сенсу.

Область видимості змінної - середовище, в якій вона визначена. Розрізняють локальні та глобальні змінні. За замовчувнням, всі змінні мають локальний характер дії. Виділяють особливий тип змінних - статичні, що дозволяє повторне звернення до змінної в певному сегменті коду, причому змінна буде зберігати попередньо отримане значення. Існує також понаття суперглобальний змінних, які служать місцем збереження даних оточення або данних, отриманних ззовні. Підтримується концепція динамічних змінних та функцій.

Константи в PHP - ідентифікатори простих значень. Можливе визначення константи, причому після її оголошення стає неможливою зміна її значення чи анулювання. Константи можуть мати лише скалярні значення. Підтримується можливість отримання значення константи за диначічним ім"ям. Область видимості констант буде глобальною для сценарію та свіх під"єднаних компонентів. Також в ядрі мови визначено чимало системних констант.

Оператори в сенсі мови дозволяють виконувати відповідну дію над одним чи кількома операндами. Оператори бувають трьох типів - унарні, бінарні та тернарні. Оператори, як і в інших мовах характеризуються не лише дією, а й асоціативністю та приоритетністю. Особливістю булевих операцій порівняння - розрізнення двох класів - з врахуванням типу і без врахування типу, при якому відбувається приведення до відповідного типу. Заокруглення відбуваються завжди в меншу сторону. В мові реалізовані особливі класи операторів - виконання, управління помилками та перевірки приналежності до класу.

Функції в сенсі мови є контейнерами коду, причому можливе поміщення інших фенкцій та класів. На цьому і базується можливість умовного визначення функції. В цьому випадку висувається вимога попередньї декларації викликаної функції, що не обов"язково в інших випадках. Можливості перевизначення чи деактивації функції не існує. Результат, який повертає функція може мати будь-який тип.

В мові реалізована функціональність посилань. Можливо створити скільки завгодно псевлонімів, що посилаються на єдиний сегмент даних. При вивільненні будь-якого з псевдонімів, сегмент даних залишається в пам"яті до моменту завершення сценарію або вивільнення усіх посилань.

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

Після виконання сценаріїв, простір пам"яті, займаної ними очищується збирачем сміття. Проте, за необхідності можливе виконання очищення пам"яті від надлишкових сегментів даних під час виконання скриптів. Використання функцій очищення пам"яті є невиправданим, хоча така можливість існує. Для побудови програмних комплексів можливо використовувати модульний підхід, виконуючи розділення різнорідного коду. При потребі, можливе виконання під"єднання необхідних модулів, причому операція виконання може бути і умовною. Під"єднані до скрипта файли можуть повертати значення. Мова явно підтримує HTTP cookies відповідно до специфікацій Netscape. Це дозволяє проводити встановлення та читання невеликих сегментів даних на стороні клієнта.

Протокол HTTP, засобами якого, як правило, обмінюються інформацією клієнт та Web-сервер не надає змогу зберегти стан сеансу взаємодії. Це випливає із тим, що між клієнтом та сервером не встановлюєтся постійне з"єднання і клієнт не надає жодних відомостей, що можуть виділити його з поміж інших активних в деякому околі часу. Альтернативою cookies є концепція сесій, яка знайшла свою реалізацію в PHP. В сесії можна зберігати різні дані, включаючи об"єкти.

## [ред.] Ліцензія

Ліцензія PHP має назву The PHP License version 3.0, ЧАП по цій ліцензії та її текст можна знайти на офіційному сайті The PHP Group, а також файл із ліцензією містить дистрибутив PHP (звичайно license.txt).

## [ред.] Історія

- У 1994-му році Расмус Лердорфом створив набір скриптів на мові Perl, що обробляли HTML-шаблони, який він назвав PHP/FI. Пізніше, в цьому ж році він переписав PHP/FI мовою C.
- 1997 PHP/FI 2
- 1998 PHP 3
- 2000 PHP 4...
- Останню версія (PHP 5) було створено у 2004-му році.
- Спершу PHP було скороченням від «Персональна домашня сторінка» (Personal Home Page), але потім ця назва була змінена на «Гіпертекстовий процессор PHP» (PHP Hypertext Processor)

## [ред.] Базовий синтаксис

### [ред.] Відокремлення 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)

### [ред.] Відокремлення інструкцій

Інструкції в PHP відокремлюються символом ;. Перед закінченням скрипту (перед тегом ?>) крапку з комою ставити необов'язково.

### [ред.] Коментарі

Коментарі в PHP можуть бути як однорядкові так і багаторядкові. Однорядкові коментарі починаються із // або # . Багаторядкові коментарі починаються символами /* і закінчуються */ . Слід зауважити, що однорядкові коментарі йдуть або до кінця текучого рядка або до закриваючого тега ?>

### [ред.] Змінні

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

#### [ред.] 1.Короткий стиль

$variable Використовується в більшості випадків.Змінна, яка створюється програмним кодом, записується таким чином. Можливо також використання такого стилю для добування змінної із ФОРМИ, якщо ввімкнено register_globals у файлі конфігурації php.ini.

#### [ред.] 2.Середній стиль

$_POST['varaible'],$_GET['variable']', $_REQUEST['variable'] Використовується для отримання данних з полей ФОРМИ. В залежності від типу передачі даних, встановлюється POST або GET або REQUEST для обох випадків.

#### [ред.] 3.Довгий стиль

$HTTP_POST_VARS['variable'],$HTTP_GET_VARS['variable'] Найбільш повний стиль запису, найменш використаний. У майбутньому буде вважатись застарілим, отже, небажаний.

Змінні, які обумовлюються користувачем, записуються у вигляді: $variable = 0.00;, $variable1 = 'hello PHP-Master!'

## [ред.] Ресурси Інтернет

- Офіційний сайт The PHP Group (англійською)
- Сайт Расмуса Лердорфа (англійською)
- Ядро Zend, на якому побудовано PHP (англійською)
- Український портал PHP.COM.UA (переважно російською)

| Це незавершена стаття про комп'ютери. Ви можете допомогти проекту, виправивши або дописавши її.

Отримано від "http://uk.wikipedia.org../../../p/h/p/PHP_%28%D0%BC%D0%BE%D0%B2%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F%29_3b49.html"

Категорії: Незавершені статті про комп'ютери | Акроніми | Мови програмування

##### Views

- Стаття
- Обговорення
- Поточна версія

##### Пошук

##### Іншими мовами

- Alemannisch
- Aragonés
- العربية
- Azərbaycan
- Български
- Bosanski
- Català
- Česky
- Dansk
- Deutsch
- Ελληνικά
- English
- Esperanto
- Español
- Eesti
- Euskara
- فارسی
- Suomi
- Français
- Galego
- עברית
- Hrvatski
- Magyar
- Bahasa Indonesia
- Íslenska
- Italiano
- 日本語
- Қазақша
- 한국어
- Kurdî / كوردي
- Latina
- Lietuvių
- Latviešu
- Bahasa Melayu
- Nederlands
- Norsk (bokmål)
- Polski
- Português
- Română
- Русский
- Srpskohrvatski / Српскохрватски
- Simple English
- Slovenčina
- Slovenščina
- Shqip
- Српски / Srpski
- Svenska
- ไทย
- Türkçe
- Tiếng Việt
- 中文