PHP
PHP | |
![]() PHP: Hypertext Preprocessor | |
Парадигма | императивен, обектно ориентиран, процедурен, рефлексивен език |
---|---|
Реализиране през | 1995 г.[1] |
Автор | Размус Лердорф |
Софтуерен разработчик | The PHP Group |
Последна стабилна версия | 8.1.13 от 24 ноември 2022 г.[2] |
Типизация на данните | динамична, слаба типизация |
Имплементация | Zend Engine, Phalanger, Quercus, Project Zero, HipHop |
Повлиян от | Perl, C, C , Java, Tcl[1] |
Език на имплементация | C |
Уебсайт | www.php.net |
![]() PHP в Общомедия |
PHP е скриптов език върху сървърната (обслужваща) страна. Той е език с отворен код, който е проектиран за уеб програмиране и е широко използван за създаване на сървърни приложения и динамично уеб съдържание. Автор на езика е канадецът от датски произход Размус Лердорф. PHP е рекурсивен акроним от PHP: Hypertext Preprocessor (като в самото начало има значение, дадено от създателите му, на Personal Home Page). Пример за PHP приложение е МедияУики – софтуерът, използван от Уикипедия.
Преглед
[редактиране | редактиране на кода]PHP е скриптов език със синтаксис, базиран на C и Perl. Използва се предимно в интернет среда за изпълнение на широк кръг от услуги и е един от най-популярните езици за програмиране в интернет.
PHP се разпространява под отворен лиценз (PHP License), който по своята същност е BSD лиценз и който позволява безплатно разпространяване на програмния код на интерпретатора на езика, както и създаването на производни интерпретатори под други лицензи с уговорката, че тези интерпретатори не могат да включват PHP в името си. Фактът, че PHP се разпространява свободно, го прави удачен избор за изграждане на уеб сървър, базиран изцяло на свободни продукти – GNU/Linux, Apache, MySQL/PostgreSQL и др.
При поискване кодът, който е написан на PHP, се интерпретира от уеб сървъра, на който е качен, и резултатът се връща на уеб браузърa. Потребителят не може да види чистия PHP код, без да има достъп до самия файл, в който той е записан. По този начин се осигурява защитата. PHP файловете могат да съдържат текст, HTML, CSS, JavaScript и PHP код и имат разширение *.php
.
Самият език е преносим на много изчислителни архитектури и операционни системи като GNU/Linux, UNIX, macOS, Windows.
Съществуват множество модули (разширения) за PHP, които добавят различни функционалности и позволяват много по-бързо и ефективно разработване. Такива допълнителни функционалности към езика са:
- функции за обработка (създаване, редактиране) на изображения
- функции за работа с низове и регулярни изрази
- функции за работа с XML съдържание
- функции за работа със сокети (гнезда)
- функции за дата и час
- математически функции
- функции за управление на сесии и работа с бисквитки
- функции за компресия и шифриране/дешифриране
- функции за COM и .NET за (Windows)
- функции за SOAP
- функции за работа с различни бази данни
- функции за работа с принтер
- функции за създаване на приложения с графичен потребителски интерфейс, базирани на библиотеката GTK
- функции за изпращане на e-mail съобщения
- хранилище за разширения и приложения на PHP: PEAR
PHP може да работи с повечето модерни бази данни – MySQL, MariaDB, PostgreSQL, Microsoft SQL Server, Oracle, SQLite и др.
На официалния сайт на PHP се намира обширна библиотека с информация за езика и модулите му, която може да се използва както за основно запознаване с езика, така и като справочник по време на работата с него.
Поради отворения характер на езика съществуват множество потребителски групи в България и по света, посветени на програмирането с PHP, където всеки може да получи помощ в работата си с този език.
История
[редактиране | редактиране на кода]Началото на PHP е поставено от Размус Лердорф[3] през 1994 г., въпреки че самият Лердорф смята 1995 за рождената година на PHP, защото тогава „отваря“ кода на новия език за програмиране.[4] В началото Размус създава Perl скриптове за следене на посещенията на резюмето на личната му страница, които впоследствие пренаписва и така се създава първата версия на PHP (тогава означаващо Personal Home Page).
През 1997 г. двамата израелски студенти на Technion (израелски технологичен институт) Зеев Сураски и Анди Гутманс пренаписват целия език, констатирайки множеството бъгове и отчасти неправилни концепции за строеж на програмен език и по-късно известяват Размус с техните предложения. Той ги приема и така се създава основният екип от разработчици (PHP Core team), който по-късно се превръща в групата на PHP (PHP group). Зеев Сураски и Анди Гутманс заедно с Размус Лердорф добавят нови функционалности и API за допълнителни модули към езика и така се създава PHP 3. Сураски и Гутманс пренаписват отново ядрото на езика и създават Zend engine през 1999 г. Пренаписването е направено основно от Сураски и Гутманс като курсов проект по време на тяхното обучение в Technion. Пренаписването е вследствие на факта, че кодът на PHP 2 е бил труден за поддръжка и доста нестабилен.
През 2005 се честват 10 години от създаването на PHP и 10 години от създаването на MySQL.
През годините ядрото на PHP претърпява много промени, като най-забележимите са следните:
- 22 май 2000 г. – излиза версия 4 на PHP, основана на Zend Engine 1.0.
- Юли 2003 г. – версия 5 на PHP, основана на Zend Engine II.
- 2005 г. – Unicode функционалност.
Синтаксис и семантика
[редактиране | редактиране на кода]PHP действа главно като филтър, който взема съдържанието на файл и изпълнява специални PHP инструкции, описани във файла. PHP скриптът има начален и краен таг, между които е разположено съдържанието. Отварящият таг е <?php
, а затварящият е ?>
. Цялата инструкция трябва да завършва с ;
.[5]
Тук има пример за код, който визуализира „Здравей, свят“:
<?php
echo 'Здравей, свят!'; /* Hello world */
?>
Ето и пример за свързване към база данни и изпълняване на проста заявка към нея:
<?php
session_start();
$dbuser = "root";
$dbpassword = "password";
$dbhost = "localhost";
$dbname = "database";
$dbc = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname);
$q = mysqli_query($dbc,"SELECT user_id, username, password FROM users WHERE `username` = '" . $uname . "' AND password = '" . $upass . "' LIMIT 1");
if(mysqli_num_rows($q) == 1)
$_SESSION['logged'] = true;
?>
Обектно ориентиран PHP:
<?php
class Beginning {
function start()
{
echo 'Hello, world';
}
}
$var = new Beginning();
$var->start();
?>
Дата и час:
<?php
$date = date("d.m.Y H:i:s");
echo $date; // Пример 14.07.2020 14:18:25
?>
PHP изпълнява кода в рамките на своите граници – кода между <?php
и ?>
, също между <?=
и ?>
(кратко echo). В зависимост от настройките на сървъра за отваряща граница може да се използва само <?
, но това не се препоръчва.[6] При липса на допълнителна обработка или прекъсване на зареждането на дадена страница всичко извън рамките се изпраща директно към изхода, без да бъде изпълнявано от PHP. Горният пример е еднакъв с долния текст (и наистина е конвертиран в този вид):
Здравей, свят!
Предимство на PHP е, че позволява командите му да бъдат влагани в HTML документите, като крайните потребители не могат да видят изходния код, написан на PHP, който преработва всичко извън рамките му:
<?php
// PHP код
?>
обикновен HTML код
<?
// още PHP код
?>
Работа с функции:
<?php
function sum(int $a, int $b): int{
return $a $b;
}
$num1 = 1;
$num2 = 2 3;
echo sum($num1,$num2); //6
Предимства на езика
[редактиране | редактиране на кода]- PHP работи на множество операционни системи (GNU/Linux, Windows, BSD, macOS) и множество уеб сървъри – Apache, lighttpd, IIS.
- PHP е лесен за разработване.
- PHP е безплатен и се разпространява под лиценза на BSD.
- PHP може да бъде лесно модифициран и адаптиран към нуждите на прилагащата го организация.
- PHP е създаден и пригоден за разработката на уеб приложения.
- PHP не изисква особени умения от разработчици, работили на структурни езици – езикът е с прост и интуитивен синтаксис за такива разработчици.
- PHP е широко разпространен поради простотата си. Има много програмисти, което води до по-евтино платен персонал във фирмите, по-ниска цена на приложенията за клиентите и още по-голяма използваемост. Поддръжката за PHP разработчици е гарантирана от множеството форуми и приложения на общността.
- По аналогия с Perl към стандартните класове на PHP могат да бъдат писани и много допълнителни модули.
- PHP поддържа следните системи за управление на бази от данни:
IBM DB2 – formix – Ingres, Microsoft SQL Server (MS SQL), mSQL, MySQL, Oracle, PostgreSQL, Sybase.
- PHP поддържа и ODBC.
Критики
[редактиране | редактиране на кода]- В по-старите версии на езика по подразбиране съществува функционалност, чрез която крайните потребители могат да подават направо променливи към PHP скрипта (register_globals). Настройката по подразбиране е премахната от версия 4.2.0, но съществуват все още много стари приложения, които предполагат употребата на тази функция.
- PHP не поддържа напълно Unicode. Пълната поддръжка се предвиждаше в PHP 6, но не беше осъществена и се премина към версия PHP 7.
- PHP не поддържа именни пространства до версия 5.3 на езика – т.е. всички функции се намират в едно именно пространство.
- Съществуват много функции на библиотеки с идентична функционалност.
- Няма изградена конвенция за именуване и подреждане на аргументите на вградените функции в PHP, което прави необходимо постоянно консултиране с документация при работа с PHP.
- PHP няма вградена поддръжка на нишки (threads), което прави обработката на големи масиви от данни много трудна: страницата не се зарежда, преди целият масив от данни да е преработен, и ако потребителят прекъсне зареждането ѝ (и уеб сървърът разрешава прекъсване на заявката), прекъсва и обработката на данните.
- Обръщенията към неинициализирани променливи и елементи на масив са разрешени в PHP, което прави възможно допускането на трудни за откриване правописни грешки.
- PHP използва т. нар. „magic quotes“, които са създадени с цел да предпазват начинаещите програмисти, но объркват по-напредналите.
- Понякога се среща несъвместимост между поведението на PHP в различните версии, което предизвиква необходимостта от пренаписване на скриптовете, писани за стари версии на езика.
Модули за достъп до база от данни
[редактиране | редактиране на кода]PHP поддържа връзки към следните СУБД (Системи за управление на бази от данни) – MySQL, PostgreSQL, SQLite ja Oracle. Освен това чрез ODBC съществува и общ интерфейс със следните СУБД – Adabas D, IBM DB2, iODBC, Solid и Sybase SQL Anywhere.
PHP Framework
[редактиране | редактиране на кода]- Сред по-известните са Laravel, Symfony и Zend Framework.
- Всеки може сам да напише свой собствен framework.
Литература
[редактиране | редактиране на кода]- Х. Кастането, Х. Роат, С. Шуман, К. Скол. Професионално програмиране с PHP ISBN 954-685-142-6
- Leon Atkinson, Zeev Suraski. Core PHP Programming. Core PHP programming third edition. ISBN 0-13-046346-9
Източници
[редактиране | редактиране на кода]- ↑ а б Размус Лердорф започва през 1994 г. асемблиране на C код, оригинално написан за CGI скриптове в библиотека и с достъп до функциите на библиотеката, включително SQL запитвания, чрез команди включени в HTML; Rasmus, Lerdorf. PHP на Hormones – история на PHP, представена от Размус Лердорф на MySQL конференция в Санта Клара, Калифорния (на английски, mp3) // The Conversations Network, 26 април 2007. Посетен на 11 декември 2009. Всеки ден променях драстично езика и не след дълго – през 1995, към средата на 1995 или някъде там PHP изглеждаше като това. Което всъщност не е далеч от днешния вид на PHP.
- ↑ PHP официален сайт // Архивиран от оригинала на 1998-07-01. Посетен на 18 февруари 2019.
- ↑ PHP on Hormones // 26 април 2007. Посетен на 14 март 2011. (на английски)
- ↑ PHP/FI release announcement // 8 юни 1995. Посетен на 14 март 2011. (на английски)
- ↑ PHP: Hypertext Preprocessor // php.net. Посетен на 19 януари 2022.
- ↑ Граници на PHP кода // The PHP Group. Посетен на 8 февруари 2010.
Външни препратки
[редактиране | редактиране на кода]- ((en)) Официален сайт на PHP
- Ръководство по PHP Архив на оригинала от 2009-03-30 в Wayback Machine. – официална документация на PHP
|