PHP-ն (անգլ.՝PHP: Hypertext Preprocessor, «PHP՝Հիպերտեքստային Պրեպրոցեսսոր») ընդհանուր նշանակությանսկրիպտայինծրագրավորման լեզու է[19], որն ինտենսիվորեն օգտագործվում էվեբ ծրագրավորման մեջ։ Ներկայումս այն աջակցվում էհոսթինգ տրամադրող ընկերությունների ճնշող մեծամասնության կողմից և հանդիսանում է առաջատար ծրագրավորման լեզուներից մեկը, որոնք կիրառվում ենդինամիկ վեբ-կայքերի ստեղծման համար[20]։
Վեբ-կայքերի կառուցման ոլորտում ճանաչված լինելը պայմանավորված է վեբ-հավելվածների ստեղծման համար նախատեսված բազմաթիվ ներկառուցված միջոցների առկայությամբ։ Դրանցից հիմնականներն են՝
Ներկայումս հարյուր հազարավոր ծրագրավորողներ օգտվում են PHP-ից։ TIOBE կորպորացիայի՝ որոնողական համակարգերի տվյալների վրա հիմնված վարկանշային աղյուսակի համաձայն,2013 թվականիհունիսի դրությամբ, ծրագրավորման լեզուների շարքում PHP-ն զբաղեցնում է 5-րդ հորիզոնականում[20]։ PHP օգտագործում են նաև բազմաթիվ հանրահայտ ընկերություններ, ինչպիսիք ենՖեյսբուքը,ՎԿ-ն ևՎիքիպեդիան։
1997-ին, երկարատևբետա-փորձարկումներից հետո վերջապես թողարկվեցC-ով գրված մշակչի երկրորդ տարբերակը՝ PHP/FI 2.0-ն։ Այն օգտագործում էին ամբողջ աշխարհի բոլորդոմենների շուրջ 1%-ը։
PHP 3.0-ի ուժեղ կողմերից մեկն այն էր, որ հնարավոր էր միջուկն ընդլայնել լրացուցիչ մոդուլների հաշվին։ Դրա հետևանքով ընդլայնումների գրառման մեջերեսը իրենց սեփական մոդուլները գրող բազմաթիվ ծրագրավորողների ուշադրությունը հրավիրեց PHP-ի կողմը, ինչը PHP-ին հնարավորություն տվեց աշխատել բազմաթիվտվյալների բազաների,կանխագրերի (անգլ.՝Protocol-ների) հետ, ապահովել բազմաթիվAPI-ներ։ Ծրագրավորողների մեծ թիվը բերեց լեզվի արագ զարգացման։ Այս տարբերակից սկսած հապավումը կարդացվում է իբրև «PHP: Hypertext Preprocessor»։
1998 թ. ձմռանը, PHP 3.0-ի թողարկումից անմիջապես հետո,Էնդի Գութմանսն ուԶեև Սուրավսկին սկսում են PHP-ի միջուկի վերամշակումը։ Անհրաժեշտ էր մեծացնել բարդ հավելումների կատարողականությունը։ Նորշարժիչը, որն անվանվեցZend Engine, կարողացավ հաղթահարել իրեն առաջադրված խնդիրները և առաջին անգամ ներկայացվեց1999-ին։ PHP 4.0-ն, որն հիմնված էր այդշարժիչի վրա, իր հետ բերեց լրացուցիչ ֆունկցիաների մի ամբողջ հավաքածու և պաշտոնապես թողարկվեց2000 թվականիմայիսին։ Որպես կատարողականության մեծացմանը լրացում, PHP 4.0-ն ուներ նաև այլ նորամուծություններ, որոնցից էին սեսսիաները, արտարծման բուֆերացումը, օգտագործողի կողմից ներմուծած ինֆորմացիայի առավել անվտանգ մշակման գործիքներ և մի քանի նոր լեզվային կառույցներ։
PHP-ի հինգերորդ տարբերակը մշակողների կողմից թողարկվեց2004 թ.հունիսի 13-ին։ Փոփոխությունները ներառում էին Zend-ի միջուկի թարմացումը (Zend Engine 2), որն էապես մեծացրեցինտերպրետատորի արդյունավետությունը։ ՆերառվեցXML նշագրման լեզվի աջակցությունը։ Ամբողջությամբ վերամշակված էինOOP-ի բոլոր ֆունկցիաները, որոնք այժմ որոշ դեպքերում նման էինJava-ի կողմից օգտագործվող մոդելին։ Մտցված էր Descructor-ը, բաց, փակ ու պաշտպանված մեթոդներն ու հատկությունները, օբյեկտենի մեջերեսն ու կլոնավորումը։ Արդեն ավելի նոր տարբերակնում ավելացվել են նաևանվանատարածքները և մի ամբողջ շարք կարևոր փոփոխություններ, որոնք քանակապես և որակապես տարբերվում էին PHP 5.0-ում տեղ գտած փոփոխություններից։
PHP-ի վեցերորդ տարբերակի մշակումը սկսվել է2006-իհոկտեմբերից, սակայն2010-իմարտին PHP6-ի մշակումը համարվեց անհեռանկարային և դադարեցվեց։ Այժմ մշակման հիմնական ուղղություն է համարվում PHP 5.4-ի մշակումը։
Trait-ների աջակցում, զանգվածների կարճ գրառման ձև։ Հեռացվել են մի շարք դիրեկտիվներ և ֆունկցիաներ՝register_globals,safe_mode,allow_call_time_pass_reference,session_register(),session_unregister() ևsession_is_registered()։ Ավելացվել է ներկառուցված վեբ-սերբեր[28]։ Գոյություն ունեցող ֆունկցիաների, արտադրողականության որոշակի բարելավվում, աշխատանքի համար անհրաժեշտ հիշողության իջեցում։
PHP 6-ի մշակումը դադարեցված է, քանի որ մշակողներն եկան այն եզրահանգմանը, որՅունիկոդի աջակցումն ապահովելու համար ամբողջ միջուկը վերագրելը այնքան էլ ճիշտ մոտեցում չէ, և որոշեցին գտնել հարցի լուծման այլ ուղիներ[29]։ Թարմացումները, որոնք պետք է տեղ գտնեին PHP 6-ում, ավելացվել են PHP 5.3.0-ում (namespace աջակցում, lambda ֆունկցիաներ, goto) և 5.4.0-ում (trait-ներ)։
PHP-ի շարահյուսությունը նման էC լեզվի շարահյութությանը։ Որոշ տարրեր, ինչպիսիք են ասոցիացվող զանգվածները ևforeach ցիկլը, վերցված ենPerl-ից։
Ծրագրում փոփոխականներ օգտագործելուց առաջ դրանք նախապես հայտարարելու կարիք չկա։ Ցանկացած ծրագիր կարող է սկսվել PHP-ի օպերատորից։
PHP-ով գրվածHello, world! ծրագիրն ունի հետևյալ տեսքը՝
<?phpecho'Hello, world!';?>
PHP-ն կատարում է միայն այն կոդը, որը<?php ?>-ի սահմաններում է։ Այն ամենը, ինչն այդ սահմաններից դուրս է գտնվում, արտարծվում է առանց փոփոխության։ Հիմնականում դա օգտագործվում է HTML փաստաթղթում PHP կոդի տեղադրման համար։ Օրինակ՝
<html><head><title>Փորձարկում ենք PHP-ն</title></head><body><?php echo 'Hello, world!'; ?></body></html>
Բացի<?php ?> սահմանիչներից, կարելի է օգտագործել նաև<? ?> և<script language="php"> </script> սահմանիչները, իսկ մինչև 6.0 տարբերակը, թույլատրվում է օգտագործել նաևASP-ի սահմանիչները՝<% %> (<? ?> և<% %> սահմանիչների աջակցությունը, ցանկության դեպքում, կարելի է անջատել ինտերպրետատորի php.ini ֆայլի միջոցով, եթե ինտերպրետատորի տարբերակը 5.3 և ավելի փոքր է)։
Փոփոխականների անվանումները սկսվում են$ նշանով։ Փոփոխականի տեսակը հրապարակել պետք չէ։ Փոփոխականների, ֆունկցիաների, հաստատունների և դասերի անվանումներում մեծատառերն ու փոքրատառերը հաշվի են առնվում։ Փոփոխականները գործում են տողեում, որոնք" " չակերտների մեջ են առնված, ինչպես նաևHeredoc տողերում (այն տողերում, որոնք ստեղծվում են «< նշանի միջոցով)։
PHP-ն աջակցում է 3 տեսակի մեկնաբանություն՝C-ի ոճով (բազմատողանի մեկնաբանություններ՝ սահմանափակված/*-ով և*/-ով),C++ ծրագրավորմկան լեզվի ոճով (միատողանի մեկնաբանություններ, որոնք սկսում են//-ով և ավարտվում ենք տողը վերջանալով) ևUnix-ի ոճով (միատողանի մեկնաբանություններ, որոնք սկսում են#-ով և ավարտվում ենք տողը վերջանալով)։
PHP-ում հրահանգները բաժանվում են կետ-ստորակետներով (;)։ Այն դրվում է բոլորի հրահանգներից հետո, բացառությամբ որոշ դեպքերի՝ if/else կառույցների և ցիկլերի գրառումներից հետ, ինչպես նաև դրանց ևդասերի /միջերեսների հրապարակումից հետո դրվող ձևավոր փակագծերից ({ և})։ Օրինակ՝
// Դասից հետո դրվող ձևավոր փակագծերից հետոclassmyClass{/* Դասի պարունակությունը */}// Այստեղ կետ-ստորակետ չի դրվում// Պայմանից հետոif($a===true)// Այստեղ կետ-ստորակետ չի դրվումvar_dump($a);// Պայմանից հետո դրվող ձևավոր փակագծերից հետոif($a===true){var_dump($a);}// Այստեղ կետ-ստորակետ չի դրվում// Ցիկլից հետոfor($i=0;$i<=10;++$i)// Այստեղ կետ-ստորակետ չի դրվումecho$i;while($i<=10)// Այստեղ կետ-ստորակետ չի դրվումecho$i++;foreach($arrayas$key=>$value)// Այստեղ կետ-ստորակետ չի դրվումecho"$key =>$value\n";// Ցիկլից հետո դրվող ձևավոր փակագծերից հետոfor($i=0;$i<=10;++$i){echo$i;}// Այստեղ կետ-ստորակետ չի դրվումwhile($i<=10){echo$i++;}// Այստեղ կետ-ստորակետ չի դրվումforeach($arrayas$key=>$value){echo"$key =>$value\n";}// Այստեղ կետ-ստորակետ չի դրվում
Ֆունկցիային փոփոխականներ կարելի է տալ ինչպես արժեքով, այնպես էլ հղումով (օգտագործելով& նշանը)։
PHP-նդինամիկ տիպավորմամբ լեզու է, ուստի փոփոխականների հայտարարման ժամանակ դրանց տեսակը նշել հարկավոր չէ։ Տարբեր սկալյար տիպերի միջև փոխակերպումն իրականացվում է անուղղակիորեն և առանց ավելորդ ջանքերի (սակայն PHP-ն նաև լայն հնարավորություններ է տալիս դրանց ուղղակիորեն փոխակերպման համար)։
PHP-ում ամբողջ թվերի (integer) միջակայքը կախված էհամակարգչային հարթակից (հիմնականում դրանք ընկած են լինում −2 147 483 648-ից 2 147 483 647-ի սահմաններում)։ Թույլատրվում ենտասական,ութական ևտասնվեցական համակարգերի թվերի օգտագործումը։ Բնական թվերի միջակայքը (double) նույնպես կախված է հարթակից (32-բիթային կառուցվածքով համակարգչի համար այդ միջակայքը ընկած է ±1.7×10−308-ից ±1.7×10+308-ի միջև)։
PHP-ն մշակողներին է ներկայացնում տվյալներիտրամաբանական տիպը (boolean), որը կարող է ընդունել ընդամենը երկու արժեք՝TRUE («ճիշտ») ևFALSE («սուտ»)։ 0 թիվը, դատարկ տողը, տողային տիպում պարունակվող զրոն ("0"),NULL-ը կամ դատարկ զանգվածը տրամաբանական տիպի փոխարկելիս ստացում էFALSE, մնացած բոլոր տիպերը և արժեքները փոխարկելիս ստացվում էTRUE։
NULL հատուկ տիպը նախատեսված է որոշակի արժեքի չունեցող փոփոխականների համար։ Այս տիպի փոփոխականները կարող են ընդունել միայնNULL արժեքը։
Դեպի արտաքին «ռեսուրսներ» հղումներն կրում են resource տիպը։ Այս տիպի փոփոխականները, որպես կանոն, իրենցից ներկայացնում ենdescriptor-ներ, որոնք թույլ են տալիս կառավարել այնպիսի արտաքին օբյեկտներ, ինչպիսիք են ֆայլերը, նկարները, տվյալների բազաների աղյուսակների արդյունքները և այլն։
Զանգվածները (array) աջակցում են թվային կամ տողային բանալիներ և հանդիսանում ենհետերոգեններ։ Զանգվածները կարող են պարունակել ցանկացած տիպի արժեքներ, այդ թվում՝ այլ զանգվածներ։ Տարրերի դասավորությունը պահպանվում է։
Փոփոխականներին դիմումը իրականացվում է$ նշանի օգնությամբ, որին հետևում է փոփոխականի անվանումը։ Այս կանոնը կիրառվում է նաև դինամիկ փոփոխականների և ֆունկցիաների ստեղծման համար[31]։ Օրինակ՝
PHP-ումecho-ն ևprint-ը ֆունկցիաներ չեն[32] (չնայածprint-ը արժեք է վերադարձնում)։ Դրանք շարահյուսական միավորներ են։ Դրանք օգտագործելուց փակագծերը կարելի է չգրել։
Սուպերգլոբալ զանգվածներ (անգլ.՝Superglobal arrays) են անվանում PHP-ում նախորոշված զանգվածները, որոնք ունեն տեսանելիության գլոբալ մակարդակ՝ առանցglobal դիրեկտիվի կիրառման։ Դրանց մեծամասնությունը իրենց մեջ պարունակում են օգտագործողի հարցման մուտքային տվյալները (GET հարցման պարամետրերը,POST մեթոդով ուղարկված ֆորմայի դաշտերի արժեքները,քուքիները և այլն)։
Բոլոր սուպերգլոբալ զանգվածները,$GLOBALS-ից և$_REQUEST-ից բացի, նախկինում ունեին երկար անուններով անալոգներ։ Դրանք PHP 5.3-ում համարվեցին հնացած, իսկ PHP 5.4-ում՝ հեռացվեցին[33]։
$GLOBALS
Բոլոր գլոբալ (այդ թվում՝ օգտագործողների կողմից ստեղծված) փոփոխականների զանգվածը։
Պարունակում է GET-հարցման պարամետրերը, որոնք փոխանցվում ենURI հասցեի միջոցով՝ «?» նշանից հետո գրելով դրանց հարժեքները։
$_POST (հնացած անալոգը՝$HTTP_POST_VARS)
HTML ֆորման POST մեթոդով ուղարկելուց դրա դաշտերի արժեքների ասոցիատիվ զանգվածը։ Տարրերի ինդեքսները համապատասխանում են HTML ֆորմայի դաշտերիname ատրիբուտին։
$_FILES (հնացած անալոգը՝$HTTP_POST_FILES)
POST մեթոդով ուղարկած ֆայլերի մասին տվյալների ասոցիացվող զանգվածը։ Զանգվածի յուրաքանչյուր տարր կրում է ֆորմայի դաշտիname ատրիբուտի արժեքին համապատասխան ինդեքս և, իր հերթին, իրենից ներկայացնում է տվյալ ֆայլի տվյալներ պարունակող զանգված։ Այդ զանգվածի տարրերն են՝
['name'] - օգտագործողի համակարգչում տեղակայված ֆայլի անունը։
['type'] - օգտագործողի բրաուզերի կողմից նշված ֆայլիMIME տեսակը։ PHP-ն չի ստուգում այն, և, հետևաբար, ոչ մի երաշխիք չկա, որ նշված տեսակը այն է, ինչ պետք է կայքին, կամ ընդհանրապես գոյություն ունի։
['tmp_name'] - ժամանակավոր պանակում գտնվող ֆայլի լրիվ հասցեն։ Ֆայլը վերբեռնելիս, PHP-ն այն տեղադրում է հատուկ ժամանակավոր պանակ։ Այն այնտեղից հարկավոր է տեղափոխել մեր ուզած պանակը՝ օգտագործելովmove_uploaded_file ֆունկցիան, որից հետո PHP-ն ֆայլը հեռացնում է ժամանակավոր պանակից։
['error'] - սխալի կոդը։ Եթե ֆայլը հաջող վերբեռնված է, ապա սխալի կոդը հավասար կլինի 0-ի (UPLOAD_ERR_OK)։
$_COOKIE (հնացած անալոգը՝$HTTP_COOKIE_VARS)
Օգտագործողի բրաուզերի կողմից ուղարկվածքուքիների ասոցիացվող զանգվածը։
$_REQUEST
Պարունակում է$_GET,$_POST և$_COOKIE զանգվածների տարրերը միասին վերցրած, իսկ սկսած PHP 4.1 տարբերակից՝ նաև$_FILES զանգվածի տարրերը։
PHP-նօբյեկտային կողմորոշմամբ ծրագրավորման (անգլ.՝Object-oriented programming, OOP) համար ունի լայն հնարավորություններ, որոնց լրիվ աջակցումը սկսվել է լեզվի 5-րդ տարբերակից սկսած։
Դասերը PHP-ում հայտարարվում ենclass բանալի բառի միջոցով։ Դասի մեթոդները և դաշտերը կարող են լինել հանրային (public, լռելյան բոլոր մեթոդներն ու դաշտերը հանրային են), պաշտպանված (protected) և թաքնված (private)։ PHP-ն աջակցում է OOP-ի բոլոր երեք մեխանիզմները՝ինկապսուլյացիա,պոլիմորֆիզմը (կամ, այլ կերպ ասած, տարաձևությունը) ևժառանգումը (ծնողական դասը նշվում է դասի անավումից հետո գրելովextends բանալի բառը, որին հաջորդում է ծնողական դասի անվանումը)։ PHP-ն նաև աջակցում էմիջերսներ (հրապարակվում էinterface, և օգտագործվում՝implements բանալի բառերի օգնությամբ)։ Թույլատրվում է հրապարակելավարտվող ևաբստրակտ մեթոդներ ու դասեր։ Դասերիբազմակի ժառանգումն չի աջակցվում, սակայն դասը կարող է իրագործել մի քանի միջերես։ Ծնողական դասի մեթոդներին դիմելու համար հարկավոր է օգտագործելparent բանալի բառը։
5.4.0 տարբերակից սկսած բազմակի ժառանգումը կարող է կատարվել նաև trait-ների միջոցով։ Trait-ները նման են mixin-ներին, սակայն trait-ների դեպքում ուղղակի ձևով հնարավոր չէ ստեղծել օբյեկտ։ Կոդի բազմակի օգտագործումը դրսևորվում է տարբեր դասերում trait-ի կոդի օգտագործմամբ։ Մեկ դասում թույլատրվում է օգտագործել մեկից ավելի trait։
PHP-ում դասերն ունեն մի շարք, այսպես կոչված, կախարդական մեթոդներ (անգլ.՝magic methods), որոնք սկսում են երկու ընդգծման նշանից։ Դրանցից պետք է նշելկառուցողը (__construct(), մինչև լեզվի 5.0 տարբերակը կառուցող էր համարվում այն մեթոդը, որի անվանումը համընկնում էր դասի անվանման հետ) ևապակառուցողը (__destruct()), ինչպես նաև դասից տվյալներ ստանալու (__get()) և գրելու (__set()) մեթոդները, օբյեկտը «քնեցնելու» (__sleep()) և «արթնացնելու» (__wake()), կլոնավորման (__clone()) և այլն։ Այս մեթոդները բավականին ճկուն գործիքներ են, քանի որ դրանք կարող են զգալիորեն փոփոխել օբյեկտի պահվածքը։
Դասի օբյեկտները ստեղծվում ենnew բանալի բառի օգնությամբ։ Օբյեկտի դաշտերին ու մեթոդներին կարելի է դիմել-> օպերատորի օգնությամբ։ Դասի մեթոդների միջից նույն դասի այլ անդամներին դիմելու համար օգտագործվում է$this փոփոխականը։
PHP 5-ից սկսած, օբյեկտները փոխանցվում են հղումների ձևով՝
classa{public$color='red';}$a=newa();echo$a->color;// red$b=$a;$b->color='blue';echo$a->color;// blue
«Paamayim Nekudotayim» (իվրիտ։ פעמיים נקודתיים) կամ ուղղակի «կրկնակի երկուկետ»։ Օգտագոևծելով այսլեքսեմը՝ ծրագրավորողը կարող է դիմել դասի հաստատուններին և ստատիկ դաշտերին ու մեթոդներին։
Այդ դասից դուրս այդ տարրերին դիմելու համար անհրաժեշտ է օգտագործել դասի անվանումը։«Paamayim Nekudotayim»-ն առաջին հայացքից, հնարավոր է, թվա, որ այն կրկնակի երկուկետի համար տարօրինակ անվանում է։ Սակայն, Zend Engine 0.5-ի ստեղծման ժամանակ (որը PHP3-ի հետ էր տրվում) Andi-ն և Zeev-ը ընտրել են[34] հենց հենց այդ նշանակումը։ «Paamayim Nekudotayim»իվրիտից թարգմանաբար իրոք նշանակում է «կրկնակի երկուկետ»։ Այդ անվանումը PHP-ի մշակմաբ ամբողջ ժամանակ մնացել է նույնը և ոչ մի անգամ չի փոխվել[35]։
<?phpclassMyClass{constCONST_VALUE='Հաստատունի արժեքը';}// Ստանում ենք հաստատունը՝ օգտագործելով։ նշանը հրապարակված դասից հետոechoMyClass::CONST_VALUE;?>
բայթ-կոդի կատարումը ինտերպրետատորի միջոցով (առանցգործարկվող ֆայլի ստեղծման)։
Հավելվածների արագագործության համար հաճախ օգտագործվում են հատուկծրագրային ապահովումներ, այսպես կոչված,արագացուցիչներ։ Դրանքքեշավորում են արդեն մեկ անգամ գեներացված բայթ-կոդըօպերատիվ հիշողության և/կամկոշտ սկավառակի մեջ, որի շնորհիվ PHP սկրիպտերի գործարկման հաջորդականության մեջ 1-3 կետերն չեն կատարվում, այլ միանգամից անցում է կատարվում 4-րդ կետին՝ բայթ-կոդի կատարմանը, ինչը բերում է աշխատանքի նշանակալի արագացման։
PHP-ի կարևոր առանձնահատկությունն այն է, որ ծրագրավորողը այլևս կարիք չունի հոգալու հիշողության մաքրման մասին։ PHP-ի մոդուլն ինքն է կառավարում հիշողության մաքրումը․ սկրիպտի աշխատանքի ավարտից հետո ամբողջ առանձնացված հիշողությունն ազատվում է[39]։
Ինտերպրետատորը կազմված էմիջուկից և նրան առանձին միացվողմոդուլներից՝«ընդլայնումներից», որոնք իրենցից ներկայացնում են դինամիկգրադարաններ։ Ընդլայնումներն թույլ են տալիս լրացնել լեզվի հիմնական հնարավորությունները, թույլ տալով աշխատելտվյալների բազաների,սոքեթների, դինամիկգրաֆիկայի,գաղտնագրության գրադարանների,PDF ձևաչափի փաստաթղթերի և նմանօրինակ այլ համակարգերի ու ստանդարտների հետ։ Ամեն ոք կարող է մշակել սեփական ընդլայնումը և միացնել այն միջուկին։ Այսօր գոյություն ունեն մեծ թվով ընդլայնումներ, ինչպես ստանդարտ, այնպես էլ մեկ այլ ընկերությունների կամ էնտուզիաստների կողմից ստեղծված, սակայն ստանդարտ միջուկի հետ տեղադրվում են միայն մի քանի տասնյակ ընդլայնումներ, որոնք իրենց, այսպես ասած, «լավ են դրսևորել»։ Բազմաթիվ ընդլայնումներ հասանելի ենPECL բաժանորդագրությունում։
PHP-ի ինտերպրետատորն ունի հատուկկազմաձևման ֆայլ՝php.ini-ն, որն պարունակում է բազմաթիվ կարգավորումներ, որոնց փոփոխումն ազդում է ինտերպրետատորի վարքագծի վրա[40]։ Հնարավորություն կա անջատել մի շարք չօգտագործվող ֆունկցիաներ, փոխել սկրիպի կողմից օգտագործվողօպերատիվ հիշողության, ժամանակի, վերբեռնվող ֆայլերի չափսի սահմանափակումները, կարգավորել սխալների գրանցումը, սեսսիաների և փոստային ծառայությունների հետ աշխատանքը, միացնել լրացուցիչ ընդլայնումներ և այլն։ Սկրիպտի կատարման ժամանակ այդ պարամետրերը հնարավոր է փոխելini_set[41] ֆունկցիայի միջոցով։
Գոյություն ունեն PHP ինտերպրետատորի օգտագործման մի շարք եղանակներ։
Որպես մոդուլվեբ-սերվերի համարSAPI-ի կամISAPI-ի միջոցով[42] (օրինակ,mod_php մոդուլըApache-ի համար)։ Վեբ-սերվերը գործարկվում է բեռնված մոդուլով և php սկրիպտին դիմելիս այն կատարվում է վեբ-սերվերիգործընթացիմիջավայրում։ Սա, բավականին հեշտ կոնֆիգուրացիայի շնորհիվ, PHP-ի օգտագործման առավել տարածված եղանակն է։
PHP-ն ունի մի քանի, այսպես կոչված,«զատիկի ձվեր» (կատակներ)։ Ցանկացած PHP սկրիպտին տալով հատուկ GET պարամետրեր, էսի փոխարեն կարելի է տեսնել տարբեր պատկերներ։
Օրինակ՝
file.php?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
Մուտքագրելով այս պարամետրը բրաուզերի հասցեի տողում, կարելի է տեսնել տարբեր պատկերներ՝ կախված ինտերպրետատորի տարբերակից՝