
- •Історія розвитку php
- •Можливості php
- •Движок мови php
- •Нововведення в php5 Нова об’єктна модель Zend 2.0
- •Покращена продуктивність
- •Нові директиви
- •Нові механізми роботи з потоками
- •Нове розширення MySqLi (вдосконалена MySql):
- •Покращена підтримка xml в php5
- •Основи:
- •Синтаксис php Загальні поняття
- •Коментарі в php скриптах
- •Типи даних в php
- •Вирази в php
- •Користувальницькі функції в php
- •Переваги та недоліки php
- •Традиційність
- •Простота
- •Ефективність
- •Безпека
- •Гнучкість
- •Безкоштовне розповсюдження
- •Недоліки php
- •Критика php
- •Список використаних джерел
Движок мови php
Мови програмування бувають двох видів: інтерпретуючі і компілюючі. А якою мовою є PHP? Для того, щоб відповісти на це питання, нам необхідно розібратися в термінології.
Програма, яка переводить код, написаний на одній мові програмування, на другий код називається транслятором. Компілятор – це теж транслятор. Він переводить код, написаний на мові високого рівня, в машинний код. В результаті процесу компіляції створюється двійковий файл, що вже можна запускати без компілятора.
Інтерпретатор – це абсолютно інша категорія. Інтерпретатор не переводить код, а виконує його. Інтерпретатор аналізує код програми і виконує кожний його рядок. Кожного разу при виконанні такого коду, необхідно користуватися інтерпретатором.
За продуктивністю інтерпретатори значно поступаються компіляторами, оскільки двійковий код виконується набагато швидше. Зате інтерпретатори дозволяють повністю контролювати програму під час її виконання.
Що стосується PHP, то він не є ні компілятором, ні інтерпретатором. PHP являє собою щось середнє, між компілятором і інтерпретатором. Спробуємо в цьому розібратися і розглянемо, як PHP обробляє код.
Рис. 1. Принцип движка PHP
Ми бачимо, що PHP складено з двох майже незалежних блоків – транслятора й інтерпретатора. Навіщо ж знадобилося так робити? Звичайно, з міркувань швидкодії.
На вхід PHP подається сценарій. PHP переводить його (транслює), перевіряючи синтаксис, до спеціального байт-коду (внутрішнє подання). Потім PHP виконує байт-код (а не код самої програми), при цьому він не створює виконуваний файл.
Байт-код значно компактніше звичайного коду програми, тому його легше (і швидше) інтерпретувати (виконувати). Посудіть самі: синтаксичний розбір здійснюється всього один раз на етапі трансляції, а виповнюється вже “напівфабрикат” – байт-код, який набагато більш зручний для цих цілей. Тому, PHP більше є інтерпретатором, ніж компілятором. Така «подвійна робота» була необхідна для наступних цілей.
Розглянемо цикл:
For (i=0;i<10; i++) {
Operator_1;
Operator_2;
Operator_3;
............
Operator_99;
Operator_100;
}
Такий цикл буде «крутитися» 10 разів. За кожний з цих десяти проходів інтерпретатор повинен проаналізувати і виконати 100 рядків коду. А в підсумку йому потрібно проаналізувати і виконати 10 * 100 = 1000 рядків коду! Якщо перекласти один раз весь цикл в байт-код, то аналізувати йому доведеться в 10 разів менше! А це означає, що сценарії будуть виконуватися в 10 разів швидше! Виходить, що PHP є транслюючим інтерпретатором.
Головною фазою роботи PHP є інтерпретація внутрішнього подання програми і її виконання. Саме ця фаза і займає найбільше часу в серйозних сценаріях. Однак, уповільнення не таке вже й суттєве.
Варто згадати, що PHP версії 3 був «чистим» інтерпретатором, а з PHP 4 сценарії стали виконуватися значно швидше, оскільки 4-а версія PHP (і PHP5) є інтерпретуючим транслятором.
Мова Perl, яку практично завжди називають компілятором, працює за такою ж схемою - вона транслює текст програми у внутрішнє подання, а потім використовує результуючий код при виконанні. Так що, можна сказати, PHP версії 4 являє собою компілятор рівно настільки, наскільки їм є Perl.
Отже, ми змушені зробити висновок, що PHP є інтерпретатором з вбудованим блоком трансляції, з оптимізуючим хід інтерпретації.
Використання інтерпретатора (а значить і PHP) має свої незаперечні переваги:
немає необхідності піклуватися про звільнення виділеної пам'яті, не потрібно закривати файли по закінченню роботи з ними - всю рутинну роботу зробить інтерпретатор, оскільки програма виконується під його пильним контролем
не потрібно думати про типи змінних, а також не потрібно оголошувати змінну до його першого використання
налагодження програм та виявлення помилок істотно спрощується - інтерпретатор повністю контролює цей процес
у контексті web-додатків, інтерпретатор також має ще дуже важливу перевагу - немає небезпеки «зависання» сервера при неправильній роботі програми
Є й інші переваги. Взагалі, використання інтерпретатора здатне дати сценаріями ту міць, яку користувачі Web від них і чекають. Програш у швидкодії PHP помітний у разі великих і складних циклів, при обробці великої кількості рядків і т. д. Однак, зауважте, це єдиний недолік PHP, який буде все менше і менше проявлятися у міру виходу більш потужних процесорів, щоб, врешті-решт, взагалі зійти нанівець.