Movatterモバイル変換


[0]ホーム

URL:


Jump to content
Վիքիպեդիա
Որոնել

PHP

Վիքիպեդիայից՝ ազատ հանրագիտարանից
Տարբերանշան
PHP
Изображение логотипа
Տեսակօբյեկտ կողմնորոշված ծրագրավորման լեզու, բազմահարացուցային ծրագրավորման լեզու և ծրագրավորման ինտերպրետացվող լեզու
Սեմանտիկաբազմամակարդակ
Կատարման ձևինտերպրետատոր
Առաջացել էհունիսի 8,1995[1][2]
ՍտեղծողRasmus Lerdorf?[3], Էնդի Գուտմանս[3], PHP Group?, Zend Technologies[4] և Զեև Սուրավսկի
ՆախագծողRasmus Lerdorf?[5]
Ընդլայնումներ.php[6] և .phar[7]
ՕՀյունիքսանման օպերացիոն համակարգ և Windows
Տիպիզացիադինամիկ տիպավորում
Համացանցի տվյալների տեսակapplication/x-httpd-php[8][9][10], application/x-httpd-php-source[11], application/x-php[12] և text/x-php[13][14]
Ներշնչվել էC++, Perl[15], Սի (ծրագրավորման լեզու)[15], Ջավա[15], Tcl[16], ԷյչԹիԷմԷլ և ՋավաՍկրիպտ
ԱրտոնագիրPHP արտոնագիր[17]
ՀաջորդHack և Falcon?
ՀմայագիրElePHPant[18]
Սխալնելի հայտման էջbugs.php.net
Կայքphp.net(անգլ.)
Ելակոդgithub.com/php/php-src
 PHP Վիքիպահեստում

PHP-ն (անգլ.՝PHP: Hypertext Preprocessor, «PHP՝Հիպերտեքստային Պրեպրոցեսսոր») ընդհանուր նշանակությանսկրիպտայինծրագրավորման լեզու է[19], որն ինտենսիվորեն օգտագործվում էվեբ ծրագրավորման մեջ։ Ներկայումս այն աջակցվում էհոսթինգ տրամադրող ընկերությունների ճնշող մեծամասնության կողմից և հանդիսանում է առաջատար ծրագրավորման լեզուներից մեկը, որոնք կիրառվում ենդինամիկ վեբ-կայքերի ստեղծման համար[20]։

Լեզուն և իրինտերպրետատորը մշակվում են մի խումբ էնտուզիաստների կողմիցբաց կոդով նախագծի շրջանակներում[21]։ Նախագիծը տարածվում էսեփական արտոնագրով, որն անհամատեղելի էGNU GPL-ի հետ։

Կիրառման ոլորտներ

[խմբագրել |խմբագրել կոդը]

Լեզվի պարզության, կատարման արագության, հարուստ ֆունկցիոնալության,բազմահարթակ լինելու ևPHP արտոնագրով ընթացիկ կոդերի տարածման շնորհիվ, այսօրվեբ-ծրագրավորման ոլորտում PHP-ն աշխարհի ամենահայտնիսկրիպտայինծրագրավորման լեզուներից մեկն է (JSP-ի,Perl-ի ևASP.NET-ում օգտագործվող լեզուների հետ միասին)։

Վեբ-կայքերի կառուցման ոլորտում ճանաչված լինելը պայմանավորված է վեբ-հավելվածների ստեղծման համար նախատեսված բազմաթիվ ներկառուցված միջոցների առկայությամբ։ Դրանցից հիմնականներն են՝

Ներկայումս հարյուր հազարավոր ծրագրավորողներ օգտվում են PHP-ից։ TIOBE կորպորացիայի՝ որոնողական համակարգերի տվյալների վրա հիմնված վարկանշային աղյուսակի համաձայն,2013 թվականիհունիսի դրությամբ, ծրագրավորման լեզուների շարքում PHP-ն զբաղեցնում է 5-րդ հորիզոնականում[20]։ PHP օգտագործում են նաև բազմաթիվ հանրահայտ ընկերություններ, ինչպիսիք ենՖեյսբուքը,ՎԿ-ն ևՎիքիպեդիան։

Պատմություն

[խմբագրել |խմբագրել կոդը]

1994 թ.ԴանիացիծրագրավորողՌասմուս Լերդորֆը ստեղծեցPerl/CGIսկրիպտերի ընտրանի, որը պետք է հաշվեր և արտարծեր իրհամացանցում տեղադրվածռեզյումեի այցելուների քանակը՝ մշակելովHTML-փաստաթղթերի նմուշները։ Լերդորֆը այդ ընտրանին անվանեցPersonal Home Page (Անձնական Տնային Էջ)։ ՇուտովPerl-ի ինտերպրետատորի ունակություններն ու արագությունը սկսեց չբավարարել, և ԼերդորֆըCծրագրավորման լեզվի օգնությամբ մշակեց նոր նմուշներիինտերպրետատոր՝PHP/FI (անգլ.՝Personal Home Page / Forms Interpreter - «Անձնական Տնային Էջ / Ֆորմաներիինտերպրետատոր») անվանումով։

1997-ին, երկարատևբետա-փորձարկումներից հետո վերջապես թողարկվեցC-ով գրված մշակչի երկրորդ տարբերակը՝ PHP/FI 2.0-ն։ Այն օգտագործում էին ամբողջ աշխարհի բոլորդոմենների շուրջ 1%-ը։

PHP 3.0 տարբերակը ենթարկվեց նշանակալի վերամշակման, որն սահմանեց ծրագրավորման լեզվի ժամանակակից տեսքն ու ոճը։1997 թվականին երկուիսրայելացիծրագրավորողներ՝Էնդի Գութմանսը ևԶեև Սուրավսկին, ինտերպրետատորի ամբողջ կոդն գրեցին նորից։ PHP 3.0-ն պաշտոնապես թողարկվեց1998հունիսին։

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-ի մշակումը։

Թողարկման պատմություն

[խմբագրել |խմբագրել կոդը]
Նշանակումը
ԿարմիրԹողարկումն այլևս չի աջակցվում
ԿանաչԹողարկումն աջակցվում է
ԿապույտԴեռ չի թողարկվել
Հիմնական տարբերակԵրկրորդական տարբերակԱմսաթիվըՆշումներ
11.0.0Հունիսի 8,1995 թ․Պաշտոնապես անվանվել է «Անձնական տվային էջի գործիքներ» (անգլ.՝Personal Home Page Tools, (PHP Tools))։ Սա PHP անվանման առաջին կիրառությունն է
22.0.0Նոյեմբերի 1,1997 թ․Մշակողի խոսքերով, այս տարբերակը «ամենաարագ և պարզ գործիքն է» դինամիկ վեբ-էջեր ստեղծելու համար
33.0.0Հունիսի 6,1998 թ․Մշակումն անցնում է մշակողների մի ամբողջ խմբի ձեռքը։ Էնդի Գութմանսը և Զեև Սուրավսկին գրում են ինտերպրետատորի ամբողջ կոդն գրում են նորից։
3.0.18Հոկտեմբերի 20,2000 թ․PHP 3.0.x-ի վերջին տարբերակըUnsupported Historical Releases
44.0.0Մայիսի 22,2000 թ․Ավելացվել է առավել առաջադեմ, երկփուլանի վերլուծողZend Engine համակարգը[22]։
4.1.0Դեկտեմբերի 10,2001 թ․Ներկայացվեց սուպերգլոբալզանգվածները ($_GET-ը,$_POST-ը,$_SESSION-ը և այլն)[22]
4.2.0Ապրիլի 22,2002 թ․register_globals-ը լռելյան անջատված է։
4.3.0Դեկտեմբերի 27,2002 թ․Ներկայացվեցհրամանի տողի միջերեսը (CLI), որը պետք է լրացներ CGI-ն[23]։
4.4.0Հուլիսի 11,2005 թ․Ավելացված է էջերphpize ևphp-config սկրիպտերի համար։
4.4.9Օգոստոսի 7,2008 թ․Անվտանգության բարելավում և սխալների ուղղում։ PHP 4.4-ի վերջին թողարկումը[24][25]։
55.0.0Հուլիսի 13,2004 թ․Zend Engine II-ը նոր օբյեկտային մոդելով։
5.1.0Նոյեմբերի 24,2005 թ․Արտադրողականության բարելավում՝ ի շնորհիվ վերակառուցված PHP Engine―ի նոր կոմպիլյատորի փոփոխականների[26]։
5.2.0Նոյեմբերի 2,2006 թ․Ֆիլտրերի ընդլայնումները լռելյան միացված են։ Մտցված էJSON-ի աջակցումը։
5.2.16Դեկտեմբերի 16,2010 թ․PHP 5.2-ի վերջին թողարկումը[27]։
5.2.17Հունվարի 6,2011 թ․Ուղղված է լողացող կետի հետ կապված կրիտիկական խոցելիությունը։
5.3.0Հունիսի 30,2009 թ․Անվանատարածքների, անցնելու պիտակների (սահմանափակgoto), բնածին PHP արխիվների (phar) աջակցում,Windows ՕՀ-ի բարելավված աջակցում,sqlite3-ի աջակցում,libmysql-ի փոխարինումըmysqlnd-ով,mime_magic-ի փոխարինումըfileinfo-ով (MIME-ի ավելի լավ աջակցման համար), ինտերնացիոնալիզացման ընդլայնում։ereg ընդլայնումն ճանաչվում է որպես հնացած։
5.3.1Նոյեմբերի 19,2009 թ․Ավելի քան 100սխալների ուղղում, որոնցից շատերը կապված են անվտանգության հետ։
5.3.2Ապրիլի 4,2010 թ․Ներառում է մեծ թվով սխալների ուղղում։
5.3.3Հուլիսի 22,2010 թ․Հիմնականում սխալների ուղղում։FPM SAPI-ի աջակցում
5.3.4Դեկտեմբերի 10,2010 թ․Հիմնականում սխալների ուղղում։ FPM SAPI-ի բարելավվում
5.3.5Հունվարի 6,2011 թ․Ուղղված է լողացող կետի հետ կապված կրիտիկական խոցելիությունը։
5.3.6Ապրիլի 10,2011 թ․Ավելի քան 60 սխալների ուղղում, որոնց մասին զեկույցները ստացվել էին նախորդ տարբերակներից։
5.3.7Օգոստոսի 18,2011 թ․Այս թողարկումը կենտրոնացված է PHP 5.3.x-ի կայունության բարելավվմանը, ինչի համար ուղղվել են անվտանգության հետ կապված ավելի քանի 90 սխալ։
5.3.8Օգոստոսի 23,2011 թ․Ուղղվել են PHP 5.3.7-ում տեղ գտած երկու սխալ։
5.3.9Հունվարի 10,2012 թ․Այս թողարկումը կենտրոնացված է PHP 5.3.x-ի կայունության բարելավվմանը, ինչի համար ուղղվել են անվտանգության հետ կապված ավելի քանի 90 սխալ։
5.3.10Փետրվարի 2,2012 թ․Ուղղվել է Սթեֆան Էսսերի կողմից զեկուցված սխալը, որի միջոցով հնարավոր էր լինում կատարել ցանկացած կոդ։
5.3.13Մայիսի 8,2012 թ․Ուղղվել է CGI-ի վրա հիմնված կարգավորումների խոցելիությունը։
5.3.14Հունիսի 6,2012 թ․Ուղղվել են բազմաթիվսխալներ։
5.3.15Հուլիսի 19,2012 թ․Ուղղվել են բազմաթիվսխալներ։
5.3.16Օգոստոսի 16,2012 թ․Ուղղվել են բազմաթիվսխալներ։
5.4.0Մարտի 1,2012 թ․Trait-ների աջակցում, զանգվածների կարճ գրառման ձև։ Հեռացվել են մի շարք դիրեկտիվներ և ֆունկցիաներ՝register_globals,safe_mode,allow_call_time_pass_reference,session_register(),session_unregister() ևsession_is_registered()։ Ավելացվել է ներկառուցված վեբ-սերբեր[28]։ Գոյություն ունեցող ֆունկցիաների, արտադրողականության որոշակի բարելավվում, աշխատանքի համար անհրաժեշտ հիշողության իջեցում։
5.4.1Ապրիլի 26,2012 թ․Ուղղվել են բազմաթիվսխալներ։
5.4.2Մայիսի 3,2012 թ․PHP-CGI հարցման տողի պարամետրի հետ կապված խոցելիության ուղղում։
5.4.3Մայիսի 8,2012 թ․Ուղղվել են CGI-ի վրա հիմնված կարգավորումներիմ, ինչպես նաև apache_request_headers()-ի հետ կապված խոցելիությունները
5.4.4Հունիսի 6,2012 թ․Ուղղվել են բազմաթիվսխալներ։
5.4.5Հուլիսի 19,2012 թ․Ուղղվել են բազմաթիվսխալներ։
5.4.6Օգոստոսի 16,2012 թ․Ուղղվել են բազմաթիվսխալներ։
66.0.0Առանց ամսաթվի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-ն նաև լայն հնարավորություններ է տալիս դրանց ուղղակիորեն փոխակերպման համար)։

Սկալյար տիպերն են՝

Ոչ սկալյար տիպերն են՝

Կեղծ տիպերն են[30]՝

  • mixed - մեկ կամ մի քանի ոչ պարտադիր պարամետրեր,
  • number - թիվ (integer կամ float)
  • callback - վերադարձվող տվյալներն ընդունողը (string կամանանուն ֆունկցիա)
  • void - պարամետրի բացակայությունը։

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-ը արժեք է վերադարձնում)։ Դրանք շարահյուսական միավորներ են։ Դրանք օգտագործելուց փակագծերը կարելի է չգրել։

Սուպերգլոբալ զանգվածներ

[խմբագրել |խմբագրել կոդը]
$a=1;$b=2;$c=$a*$b;if($c>=3){print_r($c);print_r('<br>');print_r("3 = 3");}

Սուպերգլոբալ զանգվածներ (անգլ.՝Superglobal arrays) են անվանում PHP-ում նախորոշված զանգվածները, որոնք ունեն տեսանելիության գլոբալ մակարդակ՝ առանցglobal դիրեկտիվի կիրառման։ Դրանց մեծամասնությունը իրենց մեջ պարունակում են օգտագործողի հարցման մուտքային տվյալները (GET հարցման պարամետրերը,POST մեթոդով ուղարկված ֆորմայի դաշտերի արժեքները,քուքիները և այլն)։

Բոլոր սուպերգլոբալ զանգվածները,$GLOBALS-ից և$_REQUEST-ից բացի, նախկինում ունեին երկար անուններով անալոգներ։ Դրանք PHP 5.3-ում համարվեցին հնացած, իսկ PHP 5.4-ում՝ հեռացվեցին[33]։

$GLOBALS
Բոլոր գլոբալ (այդ թվում՝ օգտագործողների կողմից ստեղծված) փոփոխականների զանգվածը։
$_SERVER (հնացած անալոգը՝$HTTP_SERVER_VARS)
Պարունակում է շրջապատի փոփոխականները, որոնքօպերացիոն համակարգը փոխանցում էսերվերին
$_ENV (հնացած անալոգը՝$HTTP_ENV_VARS)
Այնմիջավայրի փոփոխականները (անգլ.՝Environment variables), որտեղ կատարվում է սկրիպտը։ Դրանց հավաքածուն հատուկ է յուրաքանչյուրհարթակի համար։
$_GET (հնացած անալոգը՝$HTTP_GET_VARS)
Պարունակում է GET-հարցման պարամետրերը, որոնք փոխանցվում ենURI հասցեի միջոցով՝ «?» նշանից հետո գրելով դրանց հարժեքները։
$_POST (հնացած անալոգը՝$HTTP_POST_VARS)
HTML ֆորման POST մեթոդով ուղարկելուց դրա դաշտերի արժեքների ասոցիատիվ զանգվածը։ Տարրերի ինդեքսները համապատասխանում են HTML ֆորմայի դաշտերիname ատրիբուտին։
$_FILES (հնացած անալոգը՝$HTTP_POST_FILES)
POST մեթոդով ուղարկած ֆայլերի մասին տվյալների ասոցիացվող զանգվածը։ Զանգվածի յուրաքանչյուր տարր կրում է ֆորմայի դաշտիname ատրիբուտի արժեքին համապատասխան ինդեքս և, իր հերթին, իրենից ներկայացնում է տվյալ ֆայլի տվյալներ պարունակող զանգված։ Այդ զանգվածի տարրերն են՝
  • ['name'] - օգտագործողի համակարգչում տեղակայված ֆայլի անունը։
  • ['type'] - օգտագործողի բրաուզերի կողմից նշված ֆայլիMIME տեսակը։ PHP-ն չի ստուգում այն, և, հետևաբար, ոչ մի երաշխիք չկա, որ նշված տեսակը այն է, ինչ պետք է կայքին, կամ ընդհանրապես գոյություն ունի։
  • ['size'] - ֆայլի չափսը (բայթերով)
  • ['tmp_name'] - ժամանակավոր պանակում գտնվող ֆայլի լրիվ հասցեն։ Ֆայլը վերբեռնելիս, PHP-ն այն տեղադրում է հատուկ ժամանակավոր պանակ։ Այն այնտեղից հարկավոր է տեղափոխել մեր ուզած պանակը՝ օգտագործելովmove_uploaded_file ֆունկցիան, որից հետո PHP-ն ֆայլը հեռացնում է ժամանակավոր պանակից։
  • ['error'] - սխալի կոդը։ Եթե ֆայլը հաջող վերբեռնված է, ապա սխալի կոդը հավասար կլինի 0-ի (UPLOAD_ERR_OK
$_COOKIE (հնացած անալոգը՝$HTTP_COOKIE_VARS)
Օգտագործողի բրաուզերի կողմից ուղարկվածքուքիների ասոցիացվող զանգվածը։
$_REQUEST
Պարունակում է$_GET,$_POST և$_COOKIE զանգվածների տարրերը միասին վերցրած, իսկ սկսած PHP 4.1 տարբերակից՝ նաև$_FILES զանգվածի տարրերը։
$_SESSION (հնացած անալոգը՝$HTTP_SESSION_VARS)
Պարունակում է սեսիայի տվյալներ

Օբյեկտային կողմնորոշմամբ ծրագրավորում

[խմբագրել |խմբագրել կոդը]

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 փոփոխականը։

classC1extendsC2implementsI1,I2{private$a;protected$b;function__construct($a,$b){parent::__construct($a,$b);$this->a=$a;$this->b=$b;}publicfunctionplus(){return$this->a+$this->b;}/* ............... */}$d=newC1(1,2);echo$d->plus();// 3

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-համար

[խմբագրել |խմբագրել կոդը]
ԱնվանումԱրտոնագիրԿայք
CodelobsterFreewarehttp://www.codelobster.com
KomodoMozilla tri-license (MPL/LGPL/GPL)[36]http://www.activestate.com
JetBrains PhpStormProprietary softwarehttp://www.jetbrains.com/phpstorm/
PHP Development ToolsEclipse Public Licensehttp://www.eclipse.org/pdt/
Zend StudioSharewarehttp://www.zend.com/products/zend_studio/
Aptana StudioGNU GPLhttps://web.archive.org/web/20141028160346/http://aptana.org/
phpDesignerSharewarehttp://www.mpsoftware.eu/
PHP Expert EditorShareware[37]http://www.phpexperteditor.com/
NetBeans IDECDDLhttp://www.netbeans.org/
RadPHP XETrialhttps://web.archive.org/web/20101225190602/http://www.embarcadero.com/products/radphp
NuSphereTrialhttp://www.nusphere.com/
KDevelop[38]GNU GPLhttp://www.kdevelop.org/
Microsoft WebMatrixFreewarehttp://www.microsoft.com/web/webmatrix/
Notepad++GNU GPLhttp://notepad-plus-plus.org/
Sublime Text 2Proprietary softwarehttp://www.sublimetext.com/
VS.Php for Visual StudioProprietary softwarehttp://www.jcxsoftware.com/jcx/vsphp/home
PHP Tools for Visual StudioTrialhttp://www.devsense.com
DevelNextMPL-2.0http://develnext.org/
jEditGNU GPL-2.0http://jedit.org/

Ինտերպրետատորի առանձնահատկությունները

[խմբագրել |խմբագրել կոդը]

PHP սրիպտերը հիմնականում գործարկվում ենինտերպրետատորի միջոցով հետևյալ հաջորդականությամբ՝

  1. ելակետային կոդիլեքսիկական վերլուծություն ևլեքսեմների գեներացում,
  2. ստացված լեքսեմներիշարահյուսական վերլուծություն,
  3. բայթ-կոդի գեներացում,
  4. բայթ-կոդի կատարումը ինտերպրետատորի միջոցով (առանցգործարկվող ֆայլի ստեղծման)։

Հավելվածների արագագործության համար հաճախ օգտագործվում են հատուկծրագրային ապահովումներ, այսպես կոչված,արագացուցիչներ։ Դրանքքեշավորում են արդեն մեկ անգամ գեներացված բայթ-կոդըօպերատիվ հիշողության և/կամկոշտ սկավառակի մեջ, որի շնորհիվ PHP սկրիպտերի գործարկման հաջորդականության մեջ 1-3 կետերն չեն կատարվում, այլ միանգամից անցում է կատարվում 4-րդ կետին՝ բայթ-կոդի կատարմանը, ինչը բերում է աշխատանքի նշանակալի արագացման։

PHP-ի կարևոր առանձնահատկությունն այն է, որ ծրագրավորողը այլևս կարիք չունի հոգալու հիշողության մաքրման մասին։ PHP-ի մոդուլն ինքն է կառավարում հիշողության մաքրումը․ սկրիպտի աշխատանքի ավարտից հետո ամբողջ առանձնացված հիշողությունն ազատվում է[39]։

Ընդլայնումներ

[խմբագրել |խմբագրել կոդը]

Ինտերպրետատորը կազմված էմիջուկից և նրան առանձին միացվողմոդուլներից՝«ընդլայնումներից», որոնք իրենցից ներկայացնում են դինամիկգրադարաններ։ Ընդլայնումներն թույլ են տալիս լրացնել լեզվի հիմնական հնարավորությունները, թույլ տալով աշխատելտվյալների բազաների,սոքեթների, դինամիկգրաֆիկայի,գաղտնագրության գրադարանների,PDF ձևաչափի փաստաթղթերի և նմանօրինակ այլ համակարգերի ու ստանդարտների հետ։ Ամեն ոք կարող է մշակել սեփական ընդլայնումը և միացնել այն միջուկին։ Այսօր գոյություն ունեն մեծ թվով ընդլայնումներ, ինչպես ստանդարտ, այնպես էլ մեկ այլ ընկերությունների կամ էնտուզիաստների կողմից ստեղծված, սակայն ստանդարտ միջուկի հետ տեղադրվում են միայն մի քանի տասնյակ ընդլայնումներ, որոնք իրենց, այսպես ասած, «լավ են դրսևորել»։ Բազմաթիվ ընդլայնումներ հասանելի ենPECL բաժանորդագրությունում։

Կարգավորման պարամետրեր

[խմբագրել |խմբագրել կոդը]

PHP-ի ինտերպրետատորն ունի հատուկկազմաձևման ֆայլ՝php.ini-ն, որն պարունակում է բազմաթիվ կարգավորումներ, որոնց փոփոխումն ազդում է ինտերպրետատորի վարքագծի վրա[40]։ Հնարավորություն կա անջատել մի շարք չօգտագործվող ֆունկցիաներ, փոխել սկրիպի կողմից օգտագործվողօպերատիվ հիշողության, ժամանակի, վերբեռնվող ֆայլերի չափսի սահմանափակումները, կարգավորել սխալների գրանցումը, սեսսիաների և փոստային ծառայությունների հետ աշխատանքը, միացնել լրացուցիչ ընդլայնումներ և այլն։ Սկրիպտի կատարման ժամանակ այդ պարամետրերը հնարավոր է փոխելini_set[41] ֆունկցիայի միջոցով։

Ինտերպրետատորի ռեժիմներ

[խմբագրել |խմբագրել կոդը]

Գոյություն ունեն PHP ինտերպրետատորի օգտագործման մի շարք եղանակներ։

  1. Որպես մոդուլվեբ-սերվերի համարSAPI-ի կամISAPI-ի միջոցով[42] (օրինակ,mod_php մոդուլըApache-ի համար)։ Վեբ-սերվերը գործարկվում է բեռնված մոդուլով և php սկրիպտին դիմելիս այն կատարվում է վեբ-սերվերիգործընթացիմիջավայրում։ Սա, բավականին հեշտ կոնֆիգուրացիայի շնորհիվ, PHP-ի օգտագործման առավել տարածված եղանակն է։

«Զատիկի ձվերը»

[խմբագրել |խմբագրել կոդը]

PHP-ն ունի մի քանի, այսպես կոչված,«զատիկի ձվեր» (կատակներ)։ Ցանկացած PHP սկրիպտին տալով հատուկ GET պարամետրեր, էսի փոխարեն կարելի է տեսնել տարբեր պատկերներ։

Օրինակ՝

file.php?=PHPE9568F36-D428-11d2-A769-00AA001ACF42

Մուտքագրելով այս պարամետրը բրաուզերի հասցեի տողում, կարելի է տեսնել տարբեր պատկերներ՝ կախված ինտերպրետատորի տարբերակից՝

  1. Thies Arntzen-ի նկարը (4.1.2, 4.2.2 տարբերակներում)
  2. տաքսա ցեղատեսակի շան նկար (շան տերը՝Stig Bakken) (4.3.2, 4.3.3, 4.3.8 - 4.3.10 տարբերակներում)
  3. տերիեր ցեղատեսակի շան նկար (շան տերը՝Zeev Suraski) (4.3.11, 4.4.0 - 4.4.4, 5.1.0, 5.1.2 տարբերակներում)
  4. ճագարի նկար (4.3.1, 5.0.0, 5.0.3 տարբերակներ)
  5. PHP-ի աղավաղված պատկերանշանը (5.1.3 - 5.2.13 տարբերակներ)[43]
  6. խաղալիք կապույտ փղի նկարը, որի վրա գրված է PHP (սկսած 5.3.0 տարբերակից)[43]

Հաջորդ 2 պարամետրերը հնարավորություն կտան տեսնել, համապատասխանաբար, PHP-ի և ZEND-ի ստանդարտ պատկերանիշերը[43]՝

file.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42file.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42

Ինչպես նաև կարելի է տեսնել PHP 4 և 5 տարբերակների բոլոր հեղինակների անունները[43]՝

file.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000

Ծանոթագրություններ

[խմբագրել |խմբագրել կոդը]
  1. Google Groups
  2. PHP: History of PHP - Manual
  3. 3,03,1http://php.net/manual/en/history.php.php
  4. https://www.technotification.com/2018/04/best-php-frameworks.html
  5. http://lerdorf.com/bio/
  6. https://fileinfo.com/extension/php
  7. https://www.php.net/manual/en/book.phar.php
  8. Using mod_php as a DSO (deprecated) // php - Httpd Wiki
  9. Using CGI Programs
  10. https://github.com/php/php-src/blob/php-7.3.2/sapi/apache2handler/sapi_apache2.c#L56
  11. https://github.com/php/php-src/blob/php-7.3.2/sapi/apache2handler/sapi_apache2.c#L57
  12. https://gitlab.freedesktop.org/xdg/shared-mime-info/-/blob/2.3/data/freedesktop.org.xml.in#L3622-3634
  13. https://trac.edgewall.org/wiki/1.2/TracSyntaxColoring
  14. https://github.com/file/file/blob/FILE5_45/magic/Magdir/commands#L130-L151
  15. 15,015,115,2PHP: Preface - Manual
  16. Rasmus Lerdorf | PHP on Hormones — 2013.
  17. http://php.net/license/
  18. https://php.net/elephpant.php
  19. «PHP: Preface - Manual» (անգլերեն).Արխիվացված օրիգինալից 2011 թ․ օգոստոսի 21-ին. Վերցված է 2011 թ․ նոյեմբերի 19-ին.
  20. 20,020,1TIOBE Software: Tiobe Index
  21. «History of PHP and related projects» (անգլերեն).Արխիվացված օրիգինալից 2011 թ․ օգոստոսի 21-ին. Վերցված է 2011 թ․ նոյեմբերի 19-ին.
  22. 22,022,1«PHP: PHP 4 ChangeLog». The PHP Group. 2008 թ․ հունվարի 3. Վերցված է 2008 թ․ փետրվարի 22-ին.
  23. «PHP: Using PHP from the command line – Manual:». The PHP Group. Վերցված է 2009 թ․ սեպտեմբերի 11–ին-ին.
  24. «Downloads». PHP. Վերցված է 2009 թ․ հուլիսի 29-ին.
  25. «4.4.9 Release Announcement». PHP. Վերցված է 2009 թ․ հուլիսի 29-ին.
  26. «PHP manual: PDO». The PHP Group. 2011 թ․ նոյեմբերի 15. Վերցված է 2011 թ․ նոյեմբերի 15–ին-ին.
  27. PHP: News Archive - 2010
  28. «Built-in web server». Վերցված է 2012 թ․ մարտի 26-ին.
  29. «PHP 6: Features, Release Date, Hosting and Download». Վերցված է 2011 թ․ մայիսի 6-ին.
  30. «PHP: Pseudo-types and variables used in this documentation - Manual». Արխիվացված էօրիգինալից 2012 թ․ մայիսի 6-ին. Վերցված է 2012 թ․ հունիսի 11-ին.
  31. PHP: Variable variables
  32. PHP: echo
  33. Description of core php.ini directives ― register_long_arrays(անգլ.)
  34. Հնարավոր է, որ այն վերցված էC++-ից
  35. http://php.net/manual/en/language.oop5.paamayim-nekudotayim.php
  36. «Komodo IDE is a Professional Development Environment for Perl, Python, Tcl | ActiveState». Արխիվացված էօրիգինալից 2008 թ․ դեկտեմբերի 20-ին. Վերցված է 2012 թ․ օգոստոսի 23-ին.
  37. Предусмотрена бесплатная регистрация для граждан exUSSR
  38. PHP support for KDevelop 4 (and eventually Quanta+) | Milian Wolff
  39. «PHP: Basic memory management - Manual» (անգլերեն). 13 նոյեմբերի, 2009 թ․.Արխիվացված օրիգինալից 2011 թ․ օգոստոսի 21-ին. Վերցված է 2009 թ․ նոյեմբերի 17–ին-ին.
  40. «PHP: php.ini directives - Manual» (անգլերեն). 6 նոյեմբերի, 2009 թ․.Արխիվացված օրիգինալից 2011 թ․ օգոստոսի 21-ին. Վերցված է 2009 թ․ նոյեմբերի 13–ին-ին.
  41. «PHP: List of php.ini directives - Manual» (անգլերեն). 6 նոյեմբերի, 2009 թ․.Արխիվացված օրիգինալից 2011 թ․ օգոստոսի 21-ին. Վերցված է 2009 թ․ նոյեմբերի 13–ին-ին.
  42. PHP: Installed as an Apache module - Manual
  43. 43,043,143,243,3«PHP Easter Egg» (անգլերեն).Արխիվացված օրիգինալից 2011 թ․ օգոստոսի 21-ին. Վերցված է 2009 թ․ նոյեմբերի 16–ին-ին.

Արտաքին հղումներ

[խմբագրել |խմբագրել կոդը]
Ստացված է «https://hy.wikipedia.org/w/index.php?title=PHP&oldid=10034698» էջից
Կատեգորիաներ:
Թաքցված կատեգորիաներ:

[8]ページ先頭

©2009-2025 Movatter.jp