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

16 834 байт қосылды ,  8 жыл бұрын
Түйіндемесі өңделмейді
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>)
: Осы сессияларда болады.
 
[[Санат:Бағдарламалық жасақтама]]
Тіркелгісіз қатысушы