PHP: Нұсқалар арасындағы айырмашылық

Content deleted Content added
Өңдеу түйіні жоқ
машиналық түсініксіз аударма
26-жол:
 
PHP дамытушылар тобы тідің ядросы, қосымшаларымен жұмыс істейтін, соған қатар [[PEAR]] не тілдің құжаттамасы сияқты байланысты жобалармен айналысатын көптеген адамдардан тұрады.
 
 
== Қолдану облысы ==
 
PHP [[интернеттiң желiсi үшiн программалауды | веб программалау ]] төңiрегiнде - арқасында өз оңайлығы, орындауды жылдамдық, бай функционалдық ([[JSP]] қатар, [[Perl]] және [[ASP.NET]] қолданылатын тiлдермен) бiр [[скрипт тiлдерiнiң | Скрипт тiлi]] әйгiлi, [[кроссплатформенность | кроссплатформенности]] және [[PHPның лицензиясының | PHPның лицензиясы]] негiзде бастапқы кодтардың таратуына.
 
[[веб-сайт]] құрастырудың төңiрегiдегiн мәлiмдiлiк қосымшалардың веб-нiң өңдеуi үшiн кiрiстiрiлген құралдардың үлкен жиынының бар болуымен анықталады.<ref>{{cite web|url=http://docs.php.net/manual/ru/features.php|title=PHP: Айырмашылық ерекшелiктер — Manual|date=21 июня 2009|lang=ru|accessdate=2009-11-13|archiveurl=http://www.webcitation.org/616XjSW8d|archivedate=2011-08-21}}</ref>. Негiзгi негiзгi олардың iшiнен:
* автоматты шығару [[HTTP#POST|POST]] және [[HTTP#GET|GET]] - параметрлер, сонымен бiрге сервердiң веб-сiнiң айнымалы орталарының алдын ала анықталған массивтарында;
* деректер қорының әр түрлi басқару жүйелерiнiң үлкен санымен өзара әрекеттесу([[MySQL]], [[MySQLi]], [[SQLite]], [[PostgreSQL]], [[Oracle (OCI8]]), [[Oracle (ДҚБЖ )|Oracle]], [[Microsoft SQL Server]], [[Sybase]], [[ODBC]], [[mSQL]], [[IBM DB2]], [[Cloudscape]] және [[Apache Derby]], [[Informix]], [[Ovrimos SQL]], [[Lotus Notes]], [[DB++]], [[DBM]], [[dBase]], [[DBX]], [[FrontBase]], [[FilePro]], [[Ingres II]], [[SESAM]], [[Firebird]] / [[InterBase]], [[Paradox File Access]], [[MaxDB]], [[Интерфейс]] [[PDO]]);
* автоматты жiберу [[HTTP бастар|HTTP - бастар]];
* HTTPмен жұмыс - авторландырумен;
* жұмыс [[cookies]] және сессиялармен
* жергiлiктi және алып тастаған файлдармен жұмыс, [[сокеттермен (программалық интерфейс) |сокет]];
* сервер жүктелетiн файлдардың өңдеуi;
* [[XForms]]пен жұмыс.
 
PHP дәл қазiр жүз-жүздеп мың өңдеушiлерге қолданылады. PHPның 2011 жылының сәуiрiндегi TIOBEнiң жүйелердiң iздестiру дерек негiзделетiн корпорацияларын рейтингке сәйкес программалаудың тiлдердi ара-арасындаларын 5 орында болды.<ref name="tiobe" /> PHP қолданушы ең iрi сайттарға [[Facebook]] , [[Вконтакте]], [[Wikipedia]] жатады, тағы басқалар.
 
[[LAMP]] қа кiредi - жасау үшiн программалық қамтамасыз етудi таралған жиын [[хостинг]] және ([[Linux]], [[Apache]], [[MySQL]], PHP) [[веб-сайт]]тар.
 
=== GUI ді жасау - қосымшалары ===
 
PHP және шамалы осы сапада жайғандығымен, ол [[GUI]] жасау үшiн - қосымшалар қолдануға болады.
 
Қосымшалардың кроссплатформенныхы жасаулар үшiн [[виджет]]тің тиiстi әйгiлi кiтапханалары үшiн [[PHP-GTK]] пакеттер [[PHP-Qt]] және өзiмен ұсынатын орауыштар қызмет көрсетедi.
 
[[Сурет:Winbinder fe big.png|thumb|Формалардың редакторының скриншотыWinBinder|left]]
[[Windows API]] қолданумен программалау қызықтырады екi екiнiң бiрi бар болатыны сол үшiн. Бiрiншiден бұл [[open source]] пакеттерi WinBinder <ref>[http://winbinder.org/ WinBinder] home page</ref>.Оның ядросы [[C (программалау тiлi ) C]] жазылған болады. кеңейту php — php_winbinder.dll.WinBinderдiң құрамына (скриншотты қара) формалардың қолданумен WinBinderлердiң өзiне жазылған көз мөлшерiмен редакторы сонымен бiрге қосылған. Бiрақ, мән, WinBinderлер бойынша болып табылады [[WinAPI]] орауыш тұрып қалы және олардан қолданумен программалау - төмен деңгейлi жеткiлiктi.
 
Екiншi екiнiң бiрi [[интегралдалған орта | RAD (программалау ) ]] болып табылады Devel Studio<ref>[http://develstudio.ru/ Сайт Devel Studio]</ref>, ең алдымен, бағдарлалғаны жаңа бастап жүрген бағдарламашыларға.{{-1}}<ref>[http://habrahabr.ru/blogs/php/120975/ Visual PHP для Windows], шолу DevelStudio [[хабрахабр]]е</ref>
 
Сонымен бiрге үшiн PHPның iске асыруы бар болады [[.NET Framework|.NET]]/[[Mono]] мынадай атаумен [[Phalanger]]. Phalangerға кодының PHPсы компиляциялар нәтижемен кез келген бола алады.NET - қосымша, болса серверлiк немесе десктопное.
 
== Дереккөздер ==
<references/>
 
== Тарихы==
{{main|тарих PHP}}
 
[[Лердорф, Расмус|Расмус Лердорф]] [[бағдарламашы]] [[1994жылs]] [[қолына түсулер |даниялық]] құжаттардың [[HTML]]ның [[үлгi]] өңделетiн оның [[онлайн]]ының келушiлердiң қорытынды және есепке алуы үшiн [[скрипт тiлi | скрипт]] [[Perl|Perl/CGI]]сiне жиынды жасады.Лердорф ''Personal Home Pageнiң'' (''Дербес үй бетi'') жиынын атады.Функционалдықтар және Perlдың тездiгi жақында - интерпретатор скрипт - талауға басылды, және Лердорфты [[C (программалау тiлi ) си]] тiлдi қолданып жасады, үлгiлердiң жаңа интерпретаторы ''PHP/FI'' ({{lang-en|Personal Home Page / Forms Interpreter}} — «Дербес үй бетi/ [[Интерпретатор]] формалар»).
 
Қасында [[1997 жылы]] PHP/FI 2.0-шi [[C (программалау тiлi ) | Си]] жазылған өңдеушiнiң екiншi болжамы [[бета-тестеу | бета-тестеу]] ұзақтан кейiн шықты. Ол [[домендердiң интернет-сi | Домен аты]] барлық әлемдердi 1% шақты (50 мың шақты) қолданды.<ref name="off_history"/>
 
PHP 3.0-шi болжам программалау тiлiнiң қазiргi әлпет және стиль анықтаған түбегейлi өңдеуге ұшырады.[[1997 жылы]] [[Израиль]] екi [[бағдарламашы]] скихта,[[Гутманс, Энди|Энди Гутманс]][[Сураски, Зеев|Зеев Сураски]] және интерпретатордың кодтарын толық қайта жазды. PHP 3.0 [[1998 жылы]] маусымда ресми босатқан.<ref name="off_history"/>
 
PHP 3.0-шi ең күштi тараптардың бiрi қосымша модулдардың ядроның кеңейтуi шамасы келдi.Кеңейтулердi жазуды интерфейс кейiннен [[деректер қоры | деректер қоры]] көптiгi бар жұмыс iстеу мүмкiндiгi PHP берген өз модулдарының үстiнде [[APIнiң |қосымшаларының программалауын интерфейс]] үлкен санды [[хаттамалардың торлық | хаттамасы]] қолдауға жұмыс iстейтiн бөтен өңдеушiлердiң жиыны PHPға тартты. Өңдеушiлердiң үлкен саны тiлдiң самғауына және оның мәлiмдiлiгiнiң шапшаң өсуiне келтiрдi. Php акроним осы болжамнан орынына PHP: hypertext Preprocessor сияқты басын ашып айтады «Personal Home Page» әлдеқашанғы.
 
[[1998 жылы]] Қысқа, PHP 3.0, Гутманс және Сураски Зеяларды энди iс жүзiнде iлесе ресми шығулар PHPның ядросының өңдеулерiн бастады. Есептерде күрделi қосымшалардың өнiмдiлiгiнiң үлкеюi және PHPның кодының негiзiнiң модулдiгiнiң жақсартуы кiрдi. [[Zend Engine]] аталған жаңа қозғағыш қойылған есептермен ойдағыдай қарап анықтады және [[1999 жылы]] ортада тұңғыш рет елестеткен. PHP 4.0 қозғағыш бұл және қосымша функциялардың жиыны әкелген өзiңiзбен бiрге негiзделген [[2000 жылы]] мамырда ресми шықты. Өнiмдiлiктер жақсартуға қосымша ретiнде, PHP 4.0 жаңалықтар, сессиялардың сондай қолдауларын тағы бiрнеше Ключевоелер алды, қорытынды, мәлiметтiң ендiрiлетiн қолданушысының қауiпсiз әдiстерден астам өңдеулерi және бiрнеше жаңа тiл конструкциялары [[буферлеу (информатика ) | буферлеу]].
 
PHPның бесiншi болжамы [[2004 жылы]] [[13 шiлде]] өңдеушiлермен босатқан. Өзгерiстер [[интерпретатор]] тиiмдiлiктi айтарлықтай үлкейткен (Zend Engine 2 ) Zendтiң ядросының жаңартуы қосады. [[XML]] белгiнiң тiлiнiң қолдауы енгiзiлген. Ұқсас [[Java]] қолданылатын үлгiмен болатын [[ООП|объективтi-хабар программалау]] функцияның қайта өңделгендерi толық. Жеке алғанда [[деструктор]] енгiзiлген, [[ашық, жабулы және қорғал қалған мүшелер және әдiстер | (программалау ) басқалығы]], ақырғы мүшелер және әдiстер, [[интерфейстер (объективтi-хабар программалау) | интерфейс]] және объекттердiң көбейтуi. Сонымен бiрге келесi болжамдарда [[(программалау ) аттардың кеңiстiгi | аттардың кеңiстiгi]] енгiзiлдi, [[тұйықталуды (программалау ) | тұйықталу]] және бiр қатар өткелде PHP 5.0ге пайда болған сандай және сапалы салыстырылатын маңызды өзгерiстер жеткiлiктi.
PHP алтыншы болжам өндедi<ref>[http://www.php.net/~scoates/unicode/render_func_data.php Юникодтың қолдауы бар қайтадан жазылған функцияларының саны]</ref> [[2006 жылдан қазанның | 2006 жылының қазаны]]. Iстелдi <ref>[http://cvs.php.net/viewvc.cgi/php-src/README.UPDATING_TO_PHP6?view=markup Файл news.txt из дистрибутив PHP 6]</ref><ref>[http://wiki.php.net/todo/php60 Бойынша iстелiнген және iстелiнбеген жұмыстардың ағымдағы тiзiмi PHP 6]</ref> мысалы, [[POSIX]] жүйелi айтылуларды ядроның шығаруы және "ұзын" глобалдi массив жаңалықтардың жиыны,нұсқауларды алып тастау ''safe_mode'', ''magic_quotes_gpc'' и ''register_globals'' кескiндi файлдан php.ini. Негiзгi жаңалықтардың бiрi [[юникод]] қолдау болуы керек.<ref name='newphp6'>[http://www.php.net/~derick/meeting-notes.html 2005 жылдың желтоқсанында жоспарлаған өзгерiстердiң толық тiзiмi]</ref>.PHP6ның өңдеуiн [[2010-шi наурыз |наурыз 2010]] жылда дегенмен келешексiз мойындалды<ref>[http://www.amiro.ru/blog/tech/how-was-php6-died Қалай өлдi PHP6]</ref> [[юникод]] қолдауы бар күрделiлiктер артынан. PHP6ның бастапқы коды [[тармақ (болжамдармен басқару) | тармақ]] ауыстырған, өңдеудi негiзгi сызықпен 5.4-шi болжам болды.
 
== Синтаксис == <!-- TODO ref: англ статья + мануал -->
{{вики оқулық|PHP}}
PHP синтаксис [[Cи (программалау тiлi ) | Cи]] тiлдiң синтаксисiне ұқсас. Кейбiр элементтер, сондай [[ойдағы массивтар| ойдағы массив]] және <tt>foreach</tt> циклi, [[Perl]]дан шеттен алып пайдаланған.
 
Бағдарламаның жұмыстары үшiн бағдарлама Кез келген ауылы модулдар және өйткенi PHP тiкелей оператордан бастай алуға қолданылатын қандай болмасын айнымалы суреттеуге керек болмайды.
 
[[Hello world бағдарлама]] ең оңай PHPға төмендегiше көрiнедi:
<source lang="php">
<?php
echo 'Hello, world!';
?>
</source>
 
PHP шектеушiлердiң iшi болатын код сондай орындайды <code><?php ?></code>. Шектеушiлер болатынның бәрi тыс, өзгерiссiз iске аспай қалады. Мысалы, бұл негiзiнде PHPның орнатуы үшiн қолданылады - HTMLға коды - осылай құжат:
 
<source lang="html4strict">
<html>
<head>
<title>Тестеймiз PHP</title>
</head>
<body>
<?php echo 'Hello, world!'; ?>
</body>
</html>
</source>
 
Шектеушiлерден тысқары <code><?php ?></code>, қолдану қосымша варианттарға рұқсат етiледi, сондай <code><? ?></code> және <code><script language="php"> </script></code>.Бұдан басқа, болжамдарға дейiн 6.0 [[ASPның программалау тiлiнiң | Active Server Pagesi]] қолдану шектеушiлер (конструкция <code><? ?></code> и <code><% %></code> php.ini кескiндi файлында өшiре алады) <code><% %></code> рұқсат етiледi.
 
 
<tt>$</tt>, айнымалы түрiнiң айнымалының аты нышаннан жариялауға бастайды керек. Айнымалының аты, функциялар және класстар регистрге сезгiш. Сонымен бiрге тұрақтылар регистрге сезгiш. Айнымалысы [[жолдар |Тiзбектiк түр]] қаралудан өтедi, [[heredoc]] және - (<<< оператордың арқасында жасалған жолдар) жолдар.
 
PHP жаңа жолға өтудi қарайды бұл еркiн қалыппен тағы басқа тiлдерi HTML сияқты кемшiлiк, дәл осылай. Нұсқаулар "нүктелi үтiрi"(<tt>;</tt>), көмегiмен бөлiнедi, қоспағанда кейбiр жағдайлар, if/else конструкцияны тануы және циклдерден кейiн.
 
PHP түсiнiктердiң үш түрiн қолдайды: (шектелген <tt>/*&nbsp;*/</tt>)) [[Cи (программалау тiлi ) | Cи]] тiлдiң стильсiнде, (жаңа бастап жүрген <tt>//</tt> және жол жүретiн ақырына дейiн) [[C++]] [[UNIXтiң қабығының | UNIXтiң Командалық қабығы]] және (жол <tt>#</tt> ақырына дейiн).
 
=== Мәлiметтердiң түрлерi===
PHP [[динамикалық типтелумен | Динамикалық типтелу]] түрдiң нұсқауы хабарлауда айнымалы, сонымен бiрге хабарлаудың өзiне айнымалы талап етпейтiн программалау тiлi болып табылады. Дегенмен, скалярлық түрлердiң арасындағы өрнектеулер PHP қосымша күштерсiз көбiнесе анық емес iске асады кең мүмкiндiктердi iлiгедi және анық түрлердiң өзгеруi үшiн.
 
Мәлiметтердiң скалярлық түрлерiне жатады:
* [[табандатқан түр]] (integer),
* [[мәлiметтердiң нақты түрдiң жүзитiн үтiрiнен сандары]](float, double),
* [[логикалық түр]] (boolean),
* [[тiзбектiк түр]](string),
* және {{D-|[[NULL]]}} арнайы түр.
 
Скалярлық емес түрлерге жатады:
* (resource ) қор, (array ) [[массив индекстiк массив]] *, (object ) [[объект (программалау ) объект]] *,
* «қор» (resource),
* [[массив индекстiк |массив]] (array),
* [[объект (программалау )|объект]] (object),
 
Жалған түрлерге<ref>[http://ru.php.net/manual/en/language.pseudo-types.php PHP: Pseudo-types and variables used in this documentation - Manual<!-- Бас ботпен қосылған-->]</ref> жатады:
* [[mixed]]бiр немесе бiрнешесi мiндеттi емес параметрлер,
* [[number]] сан (integer немесе float)
* [[callback (программалау )|callback]] (string немесе [[тұйықталу(программалау )|аноним функциясы]])
* [[void]] параметрлердiң жоқтығы
 
PHPға (integer ) бүтiн сандарының диапазоны [[платформаның Компьютер |платформасы]] (әдетте тәуелдi болады, 32-биттiк таңбалы бүтiн сандардың бұл диапазоны, демек, -2 147 483 648 ден 2 147 483 647 ге дейiн).Сандар ондық тапсырма беруге болады, [[Сегiздiк есептеу жүйесi | сегiздiк]] [[Он алтылық есептеу жүйесi он | алтылық]] және есептеу жүйелерi.(double ) нақты сандардың диапазоны, сонымен бiрге, платформадан тәуелдi болады (диапазонның 32-биттiк архитектурасы үшiн сандармен ±1.7×10<sup>−308</sup> нан ±1.7×10<sup>+308</sup> ға дейiн операция жасауға мүмкiндiк бередi)
 
PHP [[логикалық түр]] өңдеушiлерге, қабiлеттi тек қана екi мәнi <tt>TRUE</tt> («ақиқат ») және <tt>FALSE</tt> («жалған ») қабылдауға iлiгедi.0 <tt>NULL</tt> және бос массивты жолдағы 0 бос жол, нөл сан логикалық түрге өрнектеуде тең <tt>FALSE</tt> болып есептеледi. Барлық өңге мәндер <tt>TRUE</tt> автоматты өзгертедi.
 
NULL-шы арнайы түр үшiн айнымалы белгiлi бiр мәнсiз арналған. Осы типты жалғыз мән <tt>NULL</tt> тұрақты болып табылады. NULL-шы түр инициализацияламалған айнымалы, айнымалы белгiлi <tt>NULL</tt> тұрақтыларымен қабылдайды, сонымен бiрге <tt>unset()</tt> конструкцияның арқасында алып тастаған айнымалы.
 
Сыртқы қорларға сiлтемелер (resource ) қор түрлердi алады. Деректер қоры сыртқы объекттер, сондай файлдармен басқаруға мүмкiндiк беретiн динамикалық суреттер, қорытынды кестелер [[дескриптор (белгiнiң тiлдерi) | дескриптор]] болады тағы сол сияқтылар айнымалысы осы типтар.
 
[[массивтар Индекстiк | массив]] (array ) санмен көрсетiлген және тiзбектiк Ключилердi қолдайды және [[ Индекстiк массив# Ерекше түрлер массив | гетерогендi]] болып табылады. Массивтар кез келген түрлердiң мәнi, басқа массивтарды қоса бола алады. Элементтер және олардың кiлттерiнiң ретi сақталынады. Мүлдем емес php түзу деп аталсын - массивтар массивпен, негiзiнен бұл, тезiрек жинағы, [[хеш | PHPның Ойдағы массивы#]] ретке салған. <code>foreach</code> орынына есептеуiшпен күтпеген жайт мiнез-құлық <code>for</code> циклда қолдануда болуы мүмкiн. Мысалы, үйреншiктi кiтапханадан функцияларының сандық индекстерi бар массивының iрiктеуiнiң жанында осылай, Ключи ол да да iрiктейдi.
 
PHPға функцияға нұсқағыш тұйықталумен немесе [[callback (программалау ) | callback]] жалған түрмен елестете алады. Мысалы, 5.3-шi түсiнiктi болжамнан тұйықталу және кодта контексттен мәнi анық тартуға болатын функцияның анықтауы жай қарапайым сияқты көрiнедi:
<source lang="php"> function($args..$argsN) use($ctxVar,$ctxVar1) { definition ; } </source>
callback түр елестете алады:
* жолмен (функцияның атауы ретiнде түсiндiрiп бередi);
* нөлдiк және бiрiншi элемент қайда массивымен -жол (сыныптағы статикалық функцияның атауы ретiнде түсiндiрiп бередi) ;
* нөлдiк элемент қайда массивымен - объект, бiрiншi -жол (әдiс ретiнде объектте түсiндiрiп бередi).
Тексерулер үшiн мәнi шақырылатын болып табылады қолдану керек бол<code>is_callable($var)</code>
 
=== Айнымалыға және функцияларға үндеу ===
Айнымалыға үндеу ар жағында айнымалының аты шығатын <tt>$</tt> нышаны арқылы iске асады. Осы конструкция динамикалық айнымалы және функциялардың жасауы үшiн сонымен бiрге қолдана алады.<ref>[http://php.net/variables.variable PHP: Variable variables — Manual<!-- Бас ботпен қосылған -->]</ref> мысалы:
<source lang="php">
$a = 'I am a'; // Айнымалы $a ларға мәннiң жазуы
echo $a; // Айнымалы $а лармен қорытынды
 
$b = 'a';
echo $$b; // (айнымалы $b лардың алдында қосымша $ лар) айнымалы $а лармен қорытынды
 
echo ${'a'}; // Айнымалы $а лармен қорытынды
 
function_name(); // Function_name функцияны шақыру
$c = 'function_name';
$c(); // Function_name функцияны шақыру,
 
$d = 'Class_name';
$obj = new Class_name; // Class_nameның сыныбының объектiнiң жасауы
$obj = new $d(); // Class_nameның сыныбының объектiнiң жасауы
 
$obj->b; // B объекттiң өрiске қарап сөйлеуi
$obj->c(); // Объекттiң c() әдiсiнiң шақыруы
 
$obj->$b; // A объекттiң өрiске қарап сөйлеуi, өйткенi $b = 'a'
$obj->$c(); // Әдiстiң шақыруы function_name() объект, өйткенi $c = 'function_name'
 
</source>
 
PHP да <tt>echo</tt> және <tt>print</tt> функциялармен болып табылмайды<ref>[http://ru.php.net/manual/en/function.echo.php PHP: echo — Manual<!--Бас ботпен қосылған-->]</ref> (бiр жағынан<tt>print</tt> қайтарылатын мәндi алады), синтаксистiк бiрлiктермен болып табылады. Жақша олардың қолдануында түсiруге болады.
 
=== Массивтар Суперглобальные===
PHPға ({{lang-en|Superglobal arrays}}) массивтарымен Суперглобальндермен глобалдi көру кеңiстiгiн <tt>global</tt> нұсқауын қолдану болатын алдын ала анықталған массивтар деп аталады. Көбiнесе бұл (параметрлерi - [[HTTP#POST|POST]],, [[HTTP cookie|куки]]әдiсi жiберудiң жанында сұрау салу, формалардың өрiсi тағы сол сияқтылар) қолданушының сұрау салуының кiру мәлiметтерi болу массивы.
 
Барлық глобалдi массивтар <tt>$GLOBALS</tt> және <tt>$_REQUEST</tt> басқа, (алтыншы болжамда олардың ерекшелiгiн жоспарланады) PHPның түсiнiктi шейiн бесiншi болжам ұзын аттары бар әлдеқашанғы аналогтер алады.Сайып келгенде, <tt>$_GET['year']</tt> және <tt>$HTTP_GET_VARS['year']</tt> үндеулер көру кеңiстiгi қоспағанда ұқсас: массивтар ұзын аттармен глобалдi болып табылмайды.
 
; <tt>$GLOBALS</tt>
: Массив (соның iшiнде қолданбалы ) барлық глобалдi айнымалы.
 
; <tt>$_SERVER</tt> (әлдеқашанғы аналог— <tt>$HTTP_SERVER_VARS</tt>)
: Басқару жүйесi серверге алып берген айнымалы орталар болады.
 
; <tt>$_ENV</tt> (уст. <tt>$HTTP_ENV_VARS</tt>)
: [[Айнымалы орталар]] ағымдағы ({{lang-en|Environment variables}}). Олардың жиыны скрипт орындалатын платформа үшiн ерекше.
 
; <tt>$_GET</tt> (уст. <tt>$HTTP_GET_VARS</tt>)
: GETтың параметрлерiнде болады - сұрау салу URIге сұрақ белгiсiнен кейiн тапсырған«<tt>?</tt>».
 
; <tt>$_POST</tt> (уст. <tt>$HTTP_POST_VARS</tt>)
: HTMLның өрiс мәндерiнiң ойдағы массивы - POSTтың әдiсi жiберудiң жанында форма. Элементтердiң индекстерi HTMLның басқаруының элементтерiнiң nameның атрибутын мәндерiне сәйкес келедi - форма.
 
; <tt>$_FILES</tt> (уст. <tt>$HTTP_POST_FILES</tt>)
: POSTтың әдiсiмен жiберiлген файлдар туралы мәлiметтерiмен ойдағы массив. Әрбiр элемент индекс, формада "name" атрибутын ұқсас мәнге алады, және, өз кезегiнде, сонымен бiрге келесi элементтерi бар массив болып табылады:
:* <tt>['name']</tt> — қолданушының компьютерiндегi бастапқы файл аты
:* <tt>['type']</tt> — [[MIME]] қолданушының көрcетiлген уәкiлiмен - файлдың түрi. PHP ол тексермейдi, және сондықтан көрcетiлген түр шындыққа сәйкес келетiн ешқандай да кепiлдiктер жоқ.
:* <tt>['size']</tt> — байттардағы файлдың өлшемi.
:* <tt>['tmp_name']</tt> — уақытша папкада файлға толық жол. Файл <tt>move_uploaded_file</tt>. функциясымен одан ауыстыруға керек. PHPның уақытша папкасынан толтырылған файлдары өз алдына алып тастайды.
:* <tt>['error']</tt> — қателiктiң коды. Егер файлды сәттi жүктелсе, онда бұл элемент 0-шi тең бол болады (<tt>UPLOAD_ERR_OK</tt>).
 
;<tt>$_COOKIE</tt> (ескерген атауы <tt>$HTTP_COOKIE_VARS</tt>)
: Мәндердiң қолданушысының тапсырған уәкiлдерiмен ойдағы массив[[HTTP cookie|куки]].
 
;<tt>$_REQUEST</tt>
: Элементтер массив болады <tt>$_GET</tt>, <tt>$_POST</tt>, <tt>$_COOKIE</tt>. Си болжамдар PHP 4.1 қосады <tt>$_FILES</tt>.
 
;<tt>$_SESSION</tt> (уст. <tt>$HTTP_SESSION_VARS</tt>)
: Осы сессияларда болады.
 
=== Объективтi-хабар программалау===
PHP толық қолдауы тiлдiң бесiншi болжамында енгiзiлетiн [[объективтi-хабар программалау| объективтi-хабар]] кең мүмкiндiктер қолдайды.
 
PHPға [[класс(программалау ) | класс ]] <tt>class</tt> сөзi Ключевоесi арқылы жариялайды. Кластың әдiс және өрiстерi протецтед (<tt>private</tt>) бүркеме қорғал қалған (<tt>public</tt>, үндемеу бойыншаға) белгiлi бола алады.PHP [басқалықты (программалау )| басқалық] |ООП-шының барлық үш негiзгi тетiктерiн қолдайды, [[полиморфизм (программалау ) | полиморфизм]] [[мұрагер болу (программалау ) | мұрагер болу]] және (аналық класс <tt>extends</tt> кластың атынан кейiн сөзi Ключевоесi арқылы көрсетiледi). [[интерфейстер (ООП ) | интерфейс]] (<tt>implements</tt> көмегiмен сәйкес тұрғызылады) сүйейдi. [[Финализатор ақырғы]] хабарлау рұқсат етiледi, [[абстракт методтардың | абстракт методы]] және класстар. Класстар [[#Көптiк мұрагер болу| Көптiк мұрагер болу (программалау ) мұрагер болу]] сүйемейдi, дегенмен класс бiрнеше интерфейстер iске асыра алады.Аналық сыныптың әдiстерге қарап сөйлеуi үшiн маңызды сөздi қолданылады<tt>parent</tt>.
 
PHPға сыныптар арнайы әдiстердiң қатарларын алады ({{lang-en|Magic methods}}), жаңа бастап жүрген екi астын сызу символысы. Ерекше атап өтуге болады [[конструктор (программалау )|конструктор]] (<tt>__construct()</tt>, 5.0 конструкторға дейiн болжамдардағы әдiс, аттас сыныппен қызмет көрсетедi) және [[деструктор]] (<tt>__destruct()</tt>), сонымен бiрге оқудың әдiстерi(<tt>__get()</tt>) және жазулар (<tt>__set()</tt>), жинаулар (<tt>__sleep()</tt>) және жазулар (<tt>__wake()</tt>), көбейтулер (<tt>__clone()</tt>) тағы басқалар. Бұл әдiстер болып табылады солқылдақ аспап жеткiлiктi: объекттiң мiнез-құлығының маңызды өзгерiсi қол жеткiзу мүмкiн олар қайта анықтай қол жеткiзу мүмкiн.
 
Класстың даналары <tt>new</tt>, өрiстерге қарап сөйлеу және объекттiң әдiстерiне сөзi Ключевоесi арқылы жасалады '''<tt>-></tt>''' операторды қолданып өндiрiп алады.
Әдiстер сыныптың мүшелерiне рұқсат үшiн олардың iшiнен айнымалы <tt>$this</tt> қолданылады.
<source lang='php'>
class C1 extends C2 implements I1, I2
{
private $a;
protected $b;
 
function __construct($a, $b)
{
parent::__construct($a, $b);
$this->a = $a;
$this->b = $b;
}
 
public function plus()
{
return $this->a + $this->b;
}
/* ............... */
}
 
$d = new C1(1, 2);
echo $d->plus(); // 3
</source>
Объекттер сiлтеме бойынша PHPның бесiншi болжамынан бастай берiледi:
<source lang='php'>
class a
{
public $color = 'red';
}
 
$a = new a();
echo $a -> color; // red
$b = $a;
$b -> color = 'blue';
echo $a -> color; // blue
</source>
{{anchor|Nekudotayim}}
'''«Paamayim Nekudotayim»''' немесе жай ғана « екi есе шығын қос нүкте». Бағдарламашы [[лексеманы (информатика ) | лексема]] бұл қолдана тұрақтыларға қарай алады, статикалық немесе класстардың артық тиелген қасиеттер немесе әдiстерiне.
Класс, бағдарламашы элементтерге үндеуде осыған сырттай бұл класс атты пайдалануы керек.
«Paamayim Nekudotayim» екi есе шығын қос нүктенiң белгiсi үшiн оғаш сөз тiркесiмен сырттай қарағанда андағайлай алады. Andi және Zeev болжамның Zend Engineнiң 0.5 (қай PHP3ке кiрдi), жасаулары алайда, уақытында таңдады<ref> Сияқты, бұл бинарлық форма [[C++]] тiлден алып пайдаланды көру кеңiстiгiнiң жөн-жобасы '', конструкция олардан, ''квалификациялы атпен '' тұрақтылар осы жағдайда.</ref> тап солдың белгiсi. «Paamayim Nekudotayim» шындығында демек «екi есе шығын қос нүкте» ивритте. Бұл белгiлер PHPның өңдеуi уақыт бойы бiр деге бұлжымады.<ref>[http://php.net/manual/en/language.oop5.paamayim-nekudotayim.php http://php.net/manual/en]</ref>
<source lang='php'>
<?php
class MyClass {
const CONST_VALUE = ' Тұрақтының мәнi';
}
// Қолдануы:: сыныпты тану тыс
echo MyClass::CONST_VALUE;
?>
</source>
 
== Интерпретатордың ерекшелiктерi ==
 
PHP - скрипттер реттерде әдетте [[интерпретатор]]лардын қаралудан өтедi<ref name="php_comp_int"/>, қамтамасыз ететiн [[кроссплатформенность]] игерiлген қосымшалары:
# [[лексикалық талдау]] [[бастапқы кодтың | Бастапқы коды]] және [[лексемалардың (информатика ) | лексемасы]] генерация,
# алған лексемалар [[синтаксистiк талдау]],
# [[байт]]ы генерация,
# байт орындау - ([[атқарылатын файлдың | атқарылатын файлы]] жасаусыз) интерпретаторды код.
 
Қосымшалардың жылдамдығының үлкеюлерi үшiн [[программалық қамтамасыз етудi программалық| қамтамасыз ету]] қолдану арнайы болуы мүмкiн, [[үдеткiштердi PHPның | үдеткiшi]] деп аталатын. Олардың жұмысының қағидасы бiр күнi шығарылған байтта болады - [[дисктiң қатты | диск]] и/илиға коды, сайып келгенде, қосымшаның жұмысының процессiнен кезеңдер жағдайда жұмыстың түбегейлi үдеуiне бағытталатын 1—3 шығарылады.
 
Маңызды ерекшелiк болып табылады онда өңдеушiге не ЄдЄуға қажетi жоқты және Жад [[босаудың қоқыс | жинастыру]]. PHP ядро жадты автоматты басқару үшiн құралды жүзеге асырады; барлық ерекшеленген жад жүйеге скрипттi жұмыс аяғынан кейiн қайтарылады.<ref>{{cite web|url=http://ua.php.net/manual/en/internals2.memory.management.php|title=PHP: Basic memory management — Manual|date=13 ноября 2009|lang=ru|accessdate=2009-11-17|archiveurl=http://www.webcitation.org/616Xk37JK|archivedate=2011-08-21}}</ref>
 
=== Кеңейтулер ===
 
Интерпретатор [[ядроның | Zend Engineсi]] тұрады қосылатын [[модулдардың (программалау ) | модулы]] өзiменмен [[кiтапхананың (программалау ) | кiтапханасы]] динамикалық ұсынатын "кеңейтулерден" тұрады. Кеңейтулер тiлдiң негiздi мүмкiндiктерiн [[деректер қоры | деректер қоры басқару жүйесi]] жұмыс үшiн мүмкiндiк бере толықтыруға мүмкiндiк бередi, [[сокеттермен (программалық интерфейс) | сокет]], [[графикамен компьютер | графикасы]] динамикалық, [[PDF]] қалыптың кiтапханалармен, құжаттарымен [[криптография | крифтографиялық]] соған ұқсас. Кез келген құлықтысы кеңейтудi өз меншiктi жасауға және ол қоса алады. Жасалған бөтен серiктестiктер және энтузиасттармен, дегенмен үйреншiктi жабдықтауына тек қана өз жақсы кепiлдеме берген бiрнеше он шақтылары кiредi де, үйреншiктi де кеңейтулердi көптiк бар болады. Кеңейтулердi жиын [[PECL]] репозиторииға түсiнiктi.
 
=== Күйге келтiрудiң параметрлерi ===
 
PHP интерпретатор [[кескiндi файл]] арнайы алады — <tt>php.ini</tt>, өзгерiсi интерпретатордың мiнез-құлығына ықпал ететiн күйге келтiрулердi болатын жиын.<ref>{{cite web|url=http://ua.php.net/manual/en/ini.php|title=PHP: php.ini directives — Manual|date=6 ноября 2009|lang=en|accessdate=2009-11-13|archiveurl=http://www.webcitation.org/616Xkcrhr|archivedate=2011-08-21}}</ref> Функциялардың қолдану қатарлары бөлiп тастау мүмкiндiгi, жүктелетiн файлдардың скрипт қолданылатын жедел жадты, орындау уақыты, көлемiне шектеуiн өзгертiп, қателердiң журналированиесi, сессиялары бар жұмысты және пошталық сервистермен күйге келтiрiп, қосымша кеңейтулер қосуға болады, сонымен бiрге көп басқа. Бұл параметрлер скрипттiң орындаулары уақытында командамен өзгертiле алады<tt>ini_set</tt>.<ref>{{cite web|url=http://ua.php.net/manual/en/ini.list.php|title=PHP: List of php.ini directives — Manual|date=6 ноября 2009|lang=en|accessdate=2009-11-13|archiveurl=http://www.webcitation.org/616XlBAvP|archivedate=2011-08-21}}</ref>
 
=== Интерпретатордың тәртiптерi ===
 
PHPның интерпретаторының бiрнеше қолдану әдiстерi бар болады:
# Модул ретiнде [[веб-сервер]] арқылыларда [[ISAPI]] немесе [[SAPI]]<ref>[http://www.php.net/manual/en/security.apache.php PHP: Installed as an Apache module — Manual]</ref> (мысалы, модул [[Apache]] үшiн<tt>mod_php</tt>). Сервер веб-нi толтырылған модулмен iске қосылады және phpларға қарап сөйлеуде - ол скриптке сервердiң веб-сi [[процесстiң (информатика ) | процессi]] [[ортаның | Операциялық орта]] орындалады. Арқасында келесi себептердiң PHPның қолдануының әдiсi бұл кең таралғандар:
#* ол [[талқылауды программаны | дұрыстау]] үшiн өте ыңғайлы, PHPның қатесi өйткенi (осы тәртiп егер күйге келтiрулердегi қосылған) пердеде iске аспай қалады, қате [[CGI]] тәртiпте сонда генерацияға алып келедi [[HTTP#500 күйiнiң кодтарының тiзiмiия |HTTP-коды 500]] және қосымша мәлiметтi сервердiң веб-сiне iздеуге керек;
#*PHPның кейбiр күйге келтiрулерi өзгерту мүмкiндiгi кiдiрiссiз файл арқылы болады [[.htaccess]], веб-сервердiң қайта тиеулерсiз;
#* тәртiпте HTTP пайдалану мүмкiндiгi CGI жоқ - аутентификациямен.<ref>[http://dev.1c-bitrix.ru/community/blogs/howto/568.php 1С-Битрикс — mod_php vs CGI vs FastCGI]</ref><ref>{{cite web|url=http://docs.php.net/manual/ru/features.http-auth.php|title=PHP: HTTP-Аутентификация в PHP — Manual|date=21 июня 2009|accessdate=2009-11-13|archiveurl=http://www.webcitation.org/616XlmYiV|archivedate=2011-08-21}}</ref>
#* жұмыстың биiгiрек жылдамдығымен ие болады.
# [[CGI]] ретiнде. Осы жағдайда, веб-сервер скрипттi шақыруда шақырады<tt>/usr/bin/php-cgi /path/to/script.php</tt>. Сонымен бiрге жаңа процесс және скрипт жасалады ортада орындалады<tt>php-cgi</tt>, қай, күйге келтiрулерге байланысты, сервердiң веб-сiнiң процесстiң ортасынан күштi айырмашылығы бола алады. Қазiргi варианттан астам [[FastCGI]] болып табылады. PHP препроцессор қарамастан бәрiбiр әрбiр сұрау салуда қайта жiбередi<ref>[http://www.fastcgi.com/drupal/node/5?q=node/10 PHP | FastCGI]</ref><ref>[http://dklab.ru/chicken/nablas/49.html PHPның жүктеуiн оптимизациялаймыз - код 22 есе, немесе FastCGI PHPны жылдамдатпайтын]</ref>, осы вариантты артықшылық қауiпсiздiктiң биiгiрек дәрежесi алдыңғының алдында болып табылады, сондықтан PHPның қалайы өз құқықтары бар жеке қосымша сияқты жұмыс iстейдi.
# [[командалық жолдың | командалық жолының интерфейсi]] қолданушымен шақырылатын [[командалық жолдың скриптiн | командалық жолдың интерфейсi]] ретiнде [[атқарылатын файлмен | атқарылатын файл]] болатын; скрипт шақырған қолданушының ортасында орындалады. Осы жағдайда жасаулар үшiн қолдану PHPлар [[GUI]] клиент болуы мүмкiн - қосымшалар<ref>{{cite web|url=http://docs.php.net/manual/ru/features.commandline.php|title=PHP: Командалық жолдағы қолдануы PHPлары — Manual|date=21 июня 2009|lang=ru|accessdate=2009-11-13|archiveurl=http://www.webcitation.org/616XmPeqJ|archivedate=2011-08-21}}</ref> және [[басқару жүйелерi | басқару жүйесi]] әкiмшiлiк есептердiң шешiмдерi [[UNIX]], [[Linux]], [[Microsoft Windows]], [[Mac OS X]] и [[AmigaOS]]. Ол такомалардың сапасында алайда, таратуды бiрiншiлiктiң пальмасын бере алмады [[Perl]], [[Python]] и [[Visual Basic Scripting Edition|VBScript]]
 
=== Пасхалық жұмыртқалар ===
 
PHP [[пасхалық жұмыртқалардың (виртуалды ) | пасхалық жұмыртқасы]] (әзiлдер ) бiрнеше алады. Арнайы GETтардың берiлуi - кез келген phpлерге параметрлерi - скриптке әр түрлi суреттердiң қорытындысына алып келедi.
 
Мысалы:
 
кез келген_сценари.php?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
 
браузердiң адрестi жолына бұл мән интерпретатордың болжамына байланысты әр түрлi суреттер көруге боладуға енгiзе:
# фотосурет ''Thies Arntzen'' (болжамдар 4.1.2, 4.2.2)
# фотосурет [[Такса|таксы]] (билеушісі ''Stig Bakken'') (болжамдар 4.3.2, 4.3.3, 4.3.8 — 4.3.10)
# фотосурет қара [[терьер]] (билеушісі ''Zeev Suraski'') (болжамдар 4.3.11, 4.4.0 — 4.4.4, 5.1.0, 5.1.2)
# фотосурет [[үй қояны]] (болжамдар 4.3.1, 5.0.0, 5.0.3)
#PHP бұрмалалған логотип (болжамдар 5.1.3 — 5.2.13)<ref name="0php_eeggs">{{cite web|url=http://www.0php.com/php_easter_egg.php|title=PHP Easter Egg|lang=en|accessdate=2009-11-16|archiveurl=http://www.webcitation.org/616b44t2j|archivedate=2011-08-21}}</ref>
# PHPның жазуы бар ойыншық көк пiлдiң фотосуретi (бастау болжамдар 5.3.0)<ref name="0php_eeggs"/>
Келесi екi мәндер PHP және ZENDтiң үйреншiктi логотиптарын көруге мүмкiндiк бередi, сәйкесiнше:<ref name="0php_eeggs"/>
 
кез келген_сценари.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
кез келген_сценари.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42
 
Бұл мәндер PHPға тiкелей - скрипт функциялар арқылы да алуға болады<tt>php_logo_guid</tt> и <tt>zend_logo_guid</tt> Zendтың логотибы үшiн.
 
Сонымен бiрге PHP (4,5) барлық авторларын тiзiмнiң бейнесi үшiн арнайы мәнде болады:<ref name="0php_eeggs"/>
 
кез келген_сценари.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
 
=== Талғаулы iске асырулар ===
PHPның тiлi және ниеттерi мәлiмдiлiкке байланысты негiзделген [[қосымшалардың веб-сi | қосымша веб-]] оның жылдамдығын үлкейтсiн, тiлге [[компилятор]]лар бiрнеше талғаулы , жақын PHPларына жасалған. Серiктестiк [[2010 жыл]] ақпанда осылай [[Facebook]] ашты<ref>[http://developers.facebook.com/news.php?blog=1&story=358 HipHop for PHP: Move Fast]</ref><ref>[http://www.opennet.ru/opennews/art.shtml?num=25268 Facebook серiктестiк транслятордың жоғары өнiмдi PHPлерiн кодты ашты]</ref> PHP өз компиляторы— [[HipHop (информатика)|HipHop]] (HPHP, Hyper-PHP) [[C++]] жинайтын код, [[gcc]] көмегiмен машина кодына келесi компиляциямен.
 
Кестесiнде талғаулы iске асырулардың қазiргi бүгiнгi моменттерiне тiзiмi елестеткен.
 
{| class="standard"
|+
! |Атауы
! |Лицензия
! |Компиляцияны нәтиже
|-
| [[HipHop (информатика)|HipHop]]
| [[PHP License]]
| [[C++]], [[машина коды]]
|-
| [[Roadsend PHP]]
| [[GPL]]/[[LGPL]]
| [[Си (программалау тiлi)|C]], [[машина коды]]
|-
| [[Phalanger]]
| Ms SS-PL<ref>[http://www.codeplex.com/license?ProjectName=Phalanger лицензии тексты ]{{ref-en}}</ref> ([[Shared source]])
| [[MSIL|Microsoft IL]]
|-
| [http://www.caucho.com/ Quercus] ([[веб-сервер]] құрамда Resin)
| [[GPL]] немесе коммерциялығы <!-- ref>PHP OpenSourceларға болжамдарды түсiндiрiп бередi. Компиляция тек қана коммерциялық professionдерге қосылған - болжамды</ref тексерiлмеген-->
| [[JVM]]
|-
| [http://www.phpcompiler.org/ PHC]
| [[BSDL]]
| [[Си (программалау тiлi)|C]], [[машина коды]]
|-
| [http://pipp.org/ Pipp]<ref>Жоба эксперименталдi кезеңде болады</ref>
| [[Artistic License]] и [[GNU GPL]]
| [[Parrot]]
|}
 
Кейбiр компиляторлардың салыстырмалы талдауы қол жететiн сайтта [[:en:PHPClasses repository|phpclasses.org]]: [http://www.phpclasses.org/blog/post/117-PHP-compiler-performance.html PHP compiler performance].
<!--- === Phalanger===
{{main|Phalanger}}
 
[[Phalanger]] — PHP/CLIнiң кодқа код PHP [[MSIL|Microsoft IL]] құрастыруға мүмкiндiк беретiн компилятор және кеңейтулерi. Консолды өндеуге болуы мүмкiн, [[WinForms]], қосымша [[Silverlight]]. -->
 
== Лицензиялау ==
{{main|Лицензия PHP}}
 
== PHP қосымшалар ==
=== PEAR кiтапхана===
{{main|PEAR}}
 
=== Әйгiлi веб-қосымшаныңлар===
 
Әр түрлi [[сайт]]тар, [[Веб-форумдар|форумдар]] және [[блог]]тарға кең қолданылатын қосымшалардың жиыны PHPларды қолданып жасалған.
 
* [[Drupal]], [[TYPO3|Typo3]], [[Mambo Open Source|Mambo]], [[Joomla]], [[PHP-Nuke]], [[WordPress|Wordpress]] — [[Iшiндегi басқару жүйесiнiң | басқару жүйесi (CMS ) iшiндегi]];
* [[Magento]], [[osCommerce]] — интернет-коммерция үшiн жүйелер;
* [[Coppermine Photo Gallery|Coppermine]], [[Gallery Project]], [[4images]] — суреттердiң галереялары;
* [[MediaWiki]], [[DokuWiki]] — Вика-қозғағыштар;
* [[phpBB]], [[Simple Machines Forum|SMF]], [[vBulletin]], [[Invision Power Board]] — қозғағыштар [[форум |еб- алқалы жиын]];
* [[phpMyAdmin]], [[phpPgAdmin]], [[Adminer]] — [ДҚБЖ |еректер қоры басқару жүйесi]] әкiмдiк етудiң утилиталары;
* [[eyeOS]] — Desktop Operating System қағидаларда негiзделген [[басқару жүйесi]] алып тастаған.
 
=== Фреймворктер===
PHPға [[қосымшалардың тез өңдеуiн |RAD (программалау ) ]] үшiн табылған [[фреймворк]] жиыны өте әйгiлiсi болып жасалды [[Zend Framework]], [[CakePHP]], [[Symfony]], [[CodeIgniter]], [[Kohana]] және [[Yii]]<ref>{{cite book |last=Merkel |first=Dirk |title=Expert PHP 5 Tools |publisher=Packt Publishing |year=2010 |isbn=978-1-847198-38-9 |chapter=Chapter 6: PHP Frameworks }}</ref>.
 
 
 
[[Санат:Бағдарламалық жасақтама]]
«https://kk.wikipedia.org/wiki/PHP» бетінен алынған