PHP

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене
PHP
PHP
PHP: Hypertext Preprocessor
Парадигма императивен, обектно-ориентиран, процедурен, рефлексивен език
Реализиране през 1995
(на 18 години) [1]
Автор Размус Лердорф
Софтуерен разработчик The PHP Group
Стабилна реализация 5.4.10 от 17 януари 2013;
преди 22 месеца
 (2013-01-17)
Типизация на данните динамична, слаба типизация
Имплементация Zend Engine, Phalanger, Quercus, Project Zero, HipHop
Повлиян от Perl, C, C++, Java, Tcl [1]
Език на имплементация C
Уебсайт www.php.net
Лого на уикикниги PHP Programming в Уикикниги

PHP е скриптов език върху сървърната (обслужваща) страна език с отворен код, който е проектиран за уеб програмиране и е широко използван за създаване на сървърни приложения и динамично уеб-съдържание. Автор на езика е канадецът от датски произход Размус Лердорф. PHP е рекурсивен акроним от PHP: Hypertext Preprocessor (като в самото начало има значение, дадено от създателите му, на Personal Home Page). Пример за PHP приложение е МедияУики - софтуерът, използван от Уикипедия.

Преглед[редактиране | edit source]

PHP е скриптов език със синтаксис базиран на C и Perl. Използва се предимно в Web-среда за реализиране на широк кръг от услуги. Той е един от най-популярните езици за програмиране в Интернет и популярността му расте непрекъснато.

PHP се разпространява под отворен лиценз (PHP License), който по своята същност е BSD лиценза и който позволява безплатно разпространяване на програмния код на интерпретатора на езика, както и създаването на производни интерпретатори под други лицензи с уговорката, че тези интерпретатори не могат да включват PHP в името си. Фактът, че PHP се разпространява свободно, го прави удачен избор за изграждане на Web-сървър базиран изцяло на свободни продукти - GNU/Linux, Apache, MySQL/PostgreSQL и др.

При поискване, кодът, който е написан на PHP се интерпретира от уеб сървъра на който е качен, и резултатът се връща на уеб браузърът. Потребителят не може да види чистият PHP код без да има достъп до самият файл в който той е записан. По този начин е помислено за сигурността.

Самият език е преносим на много изчислителни архитектури и операционни системи като GNU/Linux, UNIX, Mac OS X, Windows.

Съществуват множество модули (разширения) за PHP, които добавят различни функционалности и позволяват много по-бързо и ефективно разработване. Такива допълнителни функционалности към езика са:

  • функции за обработка (създаване, редактиране ...) на изображения
  • функции за работа с низове и регулярни изрази
  • функции за работа с XML съдържание
  • функции за работа със сокети (гнезда)
  • функции за дата и час
  • математически функции
  • функции за управление на сесии и работа с бисквитки (cookies)
  • функции за компресия и шифриране/дешифриране
  • функции за COM и .NET за (Windows)
  • функции за SOAP
  • функции за работа с различни бази данни
  • функции за работа с принтер
  • функции за създаване на приложения с графичен потребителски интерфейс, базирани на библиотеката GTK
  • функции за изпращане на e-mail съобщения
  • хранилище за разширения и приложения на PHP: PEAR

PHP може да работи с повечето модерни бази данни - MySQL, PostgreSQL, Microsoft SQL Server, Oracle, SQLite и д.р.

На официалния сайт на PHP се намира обширна библиотека с информация за езика и модулите му, която може да се използва както за основно запознаване с езика, така и като справочник по време на работата с него.

Поради отворения характер на езика съществуват множество потребителски групи в България и по света посветени на програмирането с PHP, където всеки може да получи помощ в работата си с този език.

История[редактиране | edit source]

Началото на PHP е поставено от Размус Лердорф[2] през 1994 г., въпреки че самият Лердорф смята 1995-та за рождената година на PHP, защото тогава "отваря" кода на новия език за програмиране.[3] В началото Размус създава Perl скриптове за следене на посещенията на резюмето на личната му страница, които впоследствие пренаписва и така се създава първата версия на PHP (тогава означаващо Personal Home Page).

През 1997 г. двамата израелски студенти на Technion (израелски технологичен институт) Зеев Сураски (Zeev Suraski) и Анди Гутманс (Andi Gutmans) пренаписват целия език, констатирайки множеството бъгове и отчасти неправилни концепции за строеж на програмен език и по-късно известяват Размус с техните предложения. Той ги приема и така се създава основният екип от разработчици (PHP Core team), който по-късно се превръща в групата на PHP (PHP group). Зеев Сураски и Анди Гутманс заедно с Размус Лердорф добавят нови функционалности и API за допълнителни модули към езика и така се създава PHP 3. Сураски и Гутманс пренаписват отново ядрото на езика и създават Zend engine през 1999 г. Пренаписването е направено основно от Сураски и Гутманс като курсов проект по време на тяхното обучение в Technion. Пренаписването е в следствие на факта, че кодът на PHP2 е бил труден за поддръжка и доста нестабилен.

През 2005-та бяха чествани 10 години PHP, наред с 10 години MySQL. До сега през годините ядрото на PHP е претърпяло много промени, като най-забележимите са следните:

  • 22 Май 2000 г. - излиза версия 4 на PHP основана на Zend Engine 1.0.
  • Юли 2003 г. - версия 5 на PHP основана на Zend Engine II.
  • 2005 г. - Уникод функционалност.

Синтаксис и семантика[редактиране | edit source]

PHP действа главно като филтър, който взема съдържанието на файл и изпълнява специални PHP инструкции, описани във файла. Повече информация за синтаксиса можете да намерите на http://php.net .

Тук има пример за код, който визуализира "Здравей, свят":

<?php
echo 'Здравей, свят!'; /* Hello world */
?>

ето и пример за свързване към база данни и изпълняване на проста заявка към нея:

<?php
session_start();
$DbUser = "root";
$DbPassword = "password";
$DbHost = "localhost";
$cn = mysql_connect($DbHost, $DbUser, $DbPassword) or die("Error in MySQL: " + mysql_error());
mysql_select_db("database", $cn);
$rs = mysql_query("SELECT UserId,Username, UserPassword FROM Users WHERE `Username` = '" . $uname . "' AND UserPassword = '" . $upass . "' LIMIT 1", $cn);
if(mysql_num_rows($rs) == 1)
    $_SESSION['logged'] = true;
mysql_close($cn);
?>

Обектно-ориентиран 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; // Пример 18.05.2012 20:04:25
?>

PHP изпълнява кода в рамките на своите граници — кода между <?php и ?>. В зависимост от настройките на сървъра, за отваряща граница може да се използва само <?, но това не се препоръчва[4]. При липса на допълнителна обработка, или прекъсване на зареждането на дадена страница - всичко извън рамките се изпраща директно към изхода, без да бъде изпълнявано от PHP. Горният пример е еднакъв с долния текст (и наистина е конвертиран в този вид):

Здравей, свят!

Предимство на PHP е, че позволява командите му да бъдат влагани в HTML документите, като крайните потребители не могат да видят изходния код написан на PHP, който преработва всичко извън рамките му:

<?php
// PHP код
?>
обикновен HTML код
<?
// още PHP код
?>

Предимства на езика[редактиране | edit source]

  • PHP работи на множество операционни системи (Unix, Linux, Windows, BSD, Mac OS X) и множество уеб сървъри - 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

Критики[редактиране | edit source]

  • В по-старите версии на езика по подразбиране съществува функционалност, чрез която крайните потребители могат да подават направо променливи към PHP скрипта (register_globals). Настройката по подразбиране е премахната от версия 4.2.0, но съществуват все още много стари приложения, които предполагат употребата на тази функция.
  • PHP не поддържа напълно Unicode. Пълната поддръжка се предвижда в PHP 6.
  • PHP не поддържа именни пространства до версия 5.3 на езика — т.е. всички функции се намират в едно именно пространство.
  • Съществуват много функции на библиотеки с идентична функционалност.
  • Няма изградена конвенция за именуване и подреждане на аргументите на вградените функции в PHP, което прави необходимо постоянно консултиране с документация при работа с PHP.
  • PHP няма вградена поддръжка на нишки (threads), което прави обработката на големи масиви от данни много трудна: страницата не се зарежда преди целият масив от данни да е преработен и ако потребителят прекъсне зареждането ѝ (и уеб сървърът разрешава прекъсване на заявката), прекъсва и обработката на данните.
  • Обръщенията към неинициализирани променливи и елементи на масив са разрешени в PHP, което прави възможно допускането на трудни за откриване правописни грешки.
  • PHP използва т. нар. "magic quotes", които са създадени с цел да предпазват начинаещите програмисти, но объркват по-напредналите.
  • Понякога се среща неконсистентност между поведението на PHP в различните версии, което предизвиква необходимостта от пренаписване на скриптовете, писани за стари версии на езика.

Модули за достъп до база от данни[редактиране | edit source]

PHP поддържа връзки към следните СУБД (Системи за Управление на База от Данни) - MySQL, PostgreSQL, SQLite ja Oracle. Освен това чрез ODBC съществува и общ интерфейст със следните СУБД — Adabas D, IBM DB2, iODBC, Solid и Sybase SQL Anywhere.

Литература[редактиране | edit source]

  • Х.Кастането, Х.Роат, С.Шуман, К.Скол. Професионално програмиране с PHP [1] ISBN 954-685-142-6

Източници[редактиране | edit source]

  1. а б Размус Лердорф започва през 1994 асемблиране на C код, оригинално написан за CGI скриптове в библиотека и с достъп до функциите на библиотеката, включително SQL запитвания, чрез команди включени в HTML; Lerdorf, Rasmus. PHP на Hormones – история на PHP, представeена от Размус Лердорф на MySQL конференция в Санта Клара, Калифорния (на английски, mp3). // The Conversations Network, 26 април 2007. Посетен на 11 декември 2009. Всеки ден променях драстично езика и не след дълго — през 1995, към средата на 1995 или някъде там PHP изглеждаше като това. Което всъщност не е далеч от днешния вид на PHP.
  2. PHP on Hormones. // 2007-04-26. Посетен на 2011-03-14.
  3. PHP/FI release announcement. // 8 Юни 1995 г.. Посетен на 2011-03-14.
  4. Граници на PHP кода. // The PHP Group. Посетен на 2010-02-08.

Външни препратки[редактиране | edit source]