PHP-də dəyişənlər. Boolean (Bul tipi)

Boolean, bul tipi dedikdə informatikada dəyişənlərinin iki mümkün dəyərdən – doğru (true) və yalan (false) – birini qəbul edə bilən primitiv tipi nəzərdə tutulur. Bu tipli dəyilşənlərə həmçinin bul dəyişənləri deylir. Ümumiyyətlə istənilən sıfır olmayan ədəd və ya boş olmayan sətir, həmçinin true açar sözü məntiqi doğru true kimi qəbul edilir. Əksinə, sıfır rəqəmi, boş sətir mənimsədilmiş dəyişən və false açar sözü məntiqi yalan – false kimi qəbul edilir. Beləliklə, istənilən boş olmayan, sıfırla nəticələnməyən ifadələr, xüsusi halda dəyişənin qiyməti məntiqi doğru qəbul edilir. PHP-də truefalse sabitləri mövcuddur və onlardan məntiqi ifadələrdə proqramın məntiqindən asılı olaraq istifadə etmək mümkündür.

Bul dəyişənlər üzərində riyazi əməliyyatlar zamanı onlar adi integer dəyişənlərə çevrilir. Daha dəqiq desək, false 0 kimi, true 1 kimi qəbul edilir. Ancaq, belə vəziyyətdə maraqlı bir halla da qarşılaşmaq olar. Növbəti mövzularda araşdıracağımız, dəyişənin dəyərini vahid qədər artırıb, azaldan ++-- operatorları bul dəyişənləri ilə gözlənilən nəticəni vermir, işləmir.

<?php
    // məntiq dəyişəni üzərində inkrement və dekrement
    $bool_var = true;
    echo "bool_var: $bool_var<br/>"
    $bool_var++;
    echo "bool_var: $bool_var<br/>"
?>

Bu proqramın nəticəsi iki dəfə 1 rəqəmini çap edir və göründüyü kimi, ++ operatoru bu halda “işləmir”.

PHP-də dəyişənlər. Resource (resurslar)

Resource PHP-in xüsusi formada istifadə etdiyi hər hansı resursdur. Resursa nümunə olaraq faylın deskriptorunu göstərən dəyişəni göstərmək olar. Bu dəyişən PHP-yə növbəti addımlarda fayl üzərində hər hansı əməliyyat zamanı hansı faylın üzərində iş görüldüyünü göstərmək üçün istifadə edilir (məsələn, fayldan növbəti sətri oxuyərkən). Digər nümunə kimi GD kitaxanasına aid imageCreate() funksiyasını göstərmək olar. Bu funksiya əməli yaddaşda verilmiş ölçüdə “boş” şəkil yaradır və onun identifikatorunu qaytarır. Bu identifikatordan istifadə edərək gələcəkdə həmən şəkil üzərində manipulyasiyalar məsələn, xət çəkmək, yazı yazmaq və s. etmək və sonda nəticəni PNG və ya JPEG formatında yadda saxlamaq mümkündür.

PHP-də dəyişənlər. Object (obyekt, obyektə istinad)

Obyekt yönümlü proqramlaşdırmanın müəyyən prinsiplərini ödəyən obyektə “istinad” (İngilis dilində “reference“, Rus dilində “ссылка” ). Ayrıca element (obyektin atribut və ya dəyişənləri) və funksiyalarına (obyektin metodları) müraciət üçün -> operatorundan istifadə edildiyini nəzərə almasaq, obyektin daxili strukturu assosiativ massivə bənzəyir. Obyektlər irəlidə daha dərindən izah ediləcək.

Obyektə istinad nə deməkdir? Obyektlərlə işləyərkən bu anlayışı düzgün başa düşmək əsas şərtlərdən biridir. Burada istinad dedikdə obyektin yaddaşda atribut və metodlarının yerləşdiyi adres nəzərdə tutulur. Faktiki olaraq hər hansı dəyilşənə mənimsədərkən və ya metoda arqument kimi ötürmə prosesində obyektin özü iştirak etmir. Onun əvəzinə obyektə istinadlar istifadə edilir. Kobud desək, dəyişəndə obyektə müraciət etməyin üsulu, obyektin “adı” saxlanılır və hər hansı dəyişənə obyekt mənimsədilmiş dəyişən mənimsədilirsə obyektin yaddaşda yeni nüsxəsi yaradılmır, obyektə sadəcə yeni “ad” verilmiş olur.

Yuxarıdakıları nəzərə alaraq göstərmək olar ki, $a = $obj kimi olarsa $a obyektində edilən hər hansı dəyişiklik uyğun olaraq $obj obyektində də həmən dəyişikliyə səbəb olacaq.

PHP-də dəyişənlər. Array (assosiativ massiv)

Assosiativ massiv, elementləri açar=>qiymət cütlüyü şəklində olan bir neçə elementdən ibarət çoxluqdur. Digər proqramlaşdırma dillərində ona həm də heş deyilir, ancaq bu anlayış PHP-yə heç uyğun deyil. => işarəsi açar sözün təyin edilmiş qiymətə uyğunluğunu göstərmək üçün istifadə edilir. Massivin hər elementinə müraciət onun açar sözünün göstərməklə edilir. C dilindən fəqrli olaraq burda arrayın açar sözləri kimi təkcə tam ədədlər yox istənilən sətir tipli dəyişənlər ola bilər. Məsələn, aşağıda yazılanlar PHP üçün normaldır:

<?php
// "0", "surname" və "name" açarlı massiv yaradır
$a = array(
    0 => "Boş sətir",
    "name" => "Tom",
    "surname" => "Hanks",
);
// "Hanks" çap edir
echo $a["surname"];
//element yaradır və ona qiymətini mənimsədir
$a["1"] => "Birinci element";
// mövcud elemntə yeni qiymət mənimsədir
$a["name"] = "Jack";
?>

İrəli gedərək qeyd edə bilərik ki, massivlər array() və ya [] konstruksiyası ilə yaradılır.

PHP-də dəyişənlər. String (sətir tipi)

İstənilən uzunluqda sətirdir. C proqramlaşdırma dilindən fərqli olaraq daxilində həm də null simvollarını saxlaya bilər. Başqa sözlə desək String daxilində yazı olmayan – binary məlumat da saxlamaq mümkündür. Sətir tipinin maksimal uzunluğu 2 qiqabaytdır. Ancaq bu limitə çox nadir hallarda çatmaq olur. Buna səbəb PHP-skriptin istifadə edə biləcək maksimal yaddaş həcminin memory_limit direktivi ilə məhtudlaşdırılmasıdır. Onun əvvəlcədən, susmaya görə təyin edilmiş dəyəri 128 meqabaytdır. Bunları nəzərə alsaq rahatlıqla qeyd etmək olar ki, bir neçə meqabayt həcmli faylın məlumatlarını bir sətir tipli dəyişənə mənimsətmək mümkündür. Buna praktikada tez-tez rast gəlinir. Sətirlə PHP-in standart funsiyaları ilə işləmək çox asandır və hətta onun hər simvoluna ayrılıqda müraciət etmək mümkündür.

PHP-də dəyişənlər. Double (həqiqi ədədlər)

Bunlara sürüşən vergüllü ədədlər deyilir. Ədəbiyyatda və praktikada float, double və ya real kimi də təyin edilir. İki yazılma forması var. Adi yazılış forması cəbrdə yazılış forması ilə eynidir məsələn, 597.5267. Eksponensial yazılış forması isə ədədləri mantissin 5.975267 uyğun 102-a hasili kimi göstərməyə imkan verir. Sıfırdan kiçik ədədlər üçün 10-un üstü mənfi olur. Buna uyğun olaraq 0.00031 ədədini 3.1 × 10-4 kimi göstərmək olar. Beləliklə:

597.5267 => 5.975267×102 => 5.975267e+2
0.00031  => 3.1×10-4      => 3.1e-4

Kompüter proqramlarında yuxarı reqistr simvollarından istifadə etmək imkanı yoxdur, ona görə də ×10 ifadəsi e simvolu şəklində yazılır və ondan sonra 10-un üstündəki qüvvət qeyd edilir. Aşağıdakı misalda $a$b dəyişənlərinin qiymətləri tamamilə eynidir:

<?php
  $a = 597.5267;
  $b = 5.975267e+2;
  $a = 0.00031;
  $b = 3.1e-4;
?>

Sürüşən vergüllü ədədlərin aparat səviyyəsində realizasiyasının ona ayrılan baytlardan və mümkün olan diapazonundan asılı olaraq bir neçə modeli var. Proqramlaşdırma dillərinin əvvəlki versiyalarında sürüşən vergüllü ədədlərin modelini açıq şəkildə göstərmək olurdu. Single (S), Extended (E), Double (D) modellərinə uyğun olaraq 4, 10 və 8 bayt ayrılırdı. Belə variantların olması onunla əlaqəlidir ki, əvvəllər prosessorların daxilində bir qurğu kimi soprosessor yox idi. Soprosessor sürüşən vergüllü ədədlərlə əməliyyatlar yerinə yetrimək – onların realizasiyası üçün lazımdır. Yəni prosessor səviyyəsində yalnız tam ədədlərlə əməliyyat etmək mümkün idi, sürüşən vergüllü ədələrlə isə əməliyyatları dilin kompilyatorunun yaradıcıları özləri nəzərə almalı idilər. Müasir dövrdə demək olar ki, belə problem yoxdur və bütün kompüterlər soprosessorla təchiz olunmuş olur. İstisna yalnız RISC-arxitekturalı superkompüterlər ola bilir. Onların sayı isə məhtuddur.

IBM Blue Gene/P superkomputeri
IBM Blue Gene/P superkomputeri

Məsələnin belə olması ona gətirib çıxarıb ki, sürüşən vergüllü ədədlərin realizasiyasi Double modelini realizasiya edən soprosessor tərəfindən müəyyən edilir və bu modelə 8 bayt ayrılır. Beləliklə, Double modeli uyğun olaraq ±2.23×10-308-dən ±1.79×10308-dək olan aralığı əhatə edir.

İcazə verilən diapazondan kənara çıxılarsa rəqəm əvəzinə sonsuzluğu göstərən INF sabiti çap edilir. Belə ədədlərlə istənilən əməllər də INF nəticəsini verir.

<?php
  echo 6.5e203; // 6.5E+203
  echo 1.8e308; // INF
  echo $var - 1.8e308; // INF
?>

PHP-də INF sabitindən başqa NAN sabiti də var. Bu sabit icazə verilməyən rəqəm mənasında işlədilir. Məsələn, növbəti misalda -1-dən kvadrat kök almaq ifadəsi göstərilib:

<?php
  echo sqrt(-1); // NAN
?>

PHP-də kompleks ədədlərlə işləmək nəzərdə tutulmadığından bu misalda o, icazə verilməyən ədəd – NAN nəticəsini qaytaracaq. INF-də olduğu kimi NAN üzərində də ixtiyari əməliyyatlar elə NAN qaytarır.

PHP-də dəyişənlər. Integer (tam ədədlər)

Riyaziyyat kursundan məlumadur ki, tam ədədlər dedikdə natural ədədlər, onların əksi və sıfır (0) birlikdə olan çoxluq nəzərdə tutulur. PHP dilində də digər proqramlaşdırma dillərində olduğu kimi Integer anlayışı elə riyaziyyatdakı tam ədəd anlayışı ilə eynidir. Lakin əməliyyat sisteminin neçə bit əsaslı olmasından asılı olaraq onun yuxarı və aşağı sərhədləri müəyyən olunur. 32-bit variantlı ƏS-də tam ədəd -2 147 483 648-dən 2 147 483 647-ə qədər qiymət ala bilər. 64-bit variantlı ƏS-də isə tam ədəd -9 223 372 036 854 775 807-dən  9 223 372 036 854 775 807 kimi qiymət ala bilər. PHP-də tam ədədin maksimal dəyərini əvvəlcədən təyin edilmiş PHP_INT_MAX sabitinə müraciət etməklə ayırd etmək olar.

<?php
  echo PHP_INT_MAX; // 9223372036854775807
?>

PHP7 və ondan sonrakı versiyalarda, Integerin həmçinin ən aşağı sərhəddini göstərən PHP_INT_MIN sabiti də daxil edilmişdir.

Alternativ kimi PHP_INT_SIZE sabitindən istifadə etmək olar. Bu sabitin qiyməti tam ədədlər üçün yaddaşdan neçə bayt ayrıldığını göstərir. 32-bit ƏS-də bu sabit 4 qiymətini alır. 4 baytın hərəsinə 8 bit olduğunu nəzərə alsaq məhz 32 bit edir və bunu da 32 bit əsaslı prosessorlarda emal etmək rahatdır. 64 bit əsaslı versiyalarda PHP-in bu sabitinin qiyməti 8-dir.

Tam ədəd göstərilən diapazondan kənara çıxarsa avtomatik double tipli ədədə çevrilir.

PHP-də dəyişənlər

Digər proqramlaşdırma dillərində olduğu kimi (çox güman ki, tək Forth dili istisna olmaqla) PHP-də də dəyişən (İngilis dilində “variable“) anlayışı var. Əvvəlki mövzularda dəyişənin nə olduğunu çox güman ki, təxmin etmisiniz.

PHP-də proqramlaşdırma zamanı yeni dəyişənlərin elan edilməsində xəsislik etmək qəbul edilməyib. Məsələn, elə əvvəlki sadə misalımızda biz sadəcə bir dəyişəndən – dövr operatorunun sayğacından istifadə edə bilərdik. Ancaq bir neçə dəyişən elan edəndə skript daha oxunaqlı olur, həm də interpretatora yeni identifikator yaratmaq ümumiyyətlə “ucuz” başa gəlir.

Dəyişənlərin adı reqistrə həssasdır. Bu o deməkdir ki, məsələn, $my_variable, $My_variable, $My_Variable$MY_VARIABLE tam fərqli dörd dəyişəndir. Həm də dəyişənlərin adları mütləq $ işarəsi ilə başlamalıdır. Bu, dəyişnləri daha rahat ayırd etmək və “başa düşməkdə” interpretatorun işini sadələşdirir.

PHP-də dəyişənlər sözün əsl mənasında istənilən informasiyanı özündə saxlaya bilən xüsusi obyektlərdir. Əgər proqramda nəsə saxlanılırsa o mütləq hər hansısa dəyişəndə saxlanılır. İstisna hal daxilində yalnız ədəd və yazı, PHP7-dən başlayaraq isə massiv saxlaya bilən sabitlər ola bilər.

PHP-də həmçinin istinad dəyişənlər anlayışı da var. Bu tipin üç növü var: birbaşa, simvolikobyektə istinad. Növbəti mövzulardan birində bu haqda danışılacaq.

Yuxarıda deyildiyi kimi PHP-də dəyişənləri açıq elan etmək, onların tipini əvvəlcədən elan etmək lazım deyil. Bu interpretator tərəfindən avtomatik edilir. Ancaq hərdən, məsələn, yazı tipli dəyişəndə həqiqətən də rəqəm göstərilərsə interpretator səhv edə bilir və buna görə də nadir hallarda bu və ya digər ifadənin hansı tipdə olduğunu aydın göstərmək ehtiyacı yarana bilər.

PHP-də dəyişənlərin birbaşa olaraq bir necə tipi var. İrəli gedərək qeyd edək ki, dəyişənin tipini gettype($variable) funksiyasını çağırmaqla öyrənmək olar. Bu funksiya dəyişənin tipinin yazı formasında adını qaytarır.

Növbəti mövzularda PHP-in başa düşdüyü dəyişənlərin tiplərinə qısa da olsa ayrılıqda baxılıb:

PHP proqram nümunəsi

İndi isə PHP dilində ənənəvi “Hello, world!” proqramına baxaq:

<?php
echo "Hello, world!";
?>

PHP-skript öz təbiətinə görə adi CGI-skriptlərdən müəyyən qədər fərqlidir. Yuxarıda göstərilən proqramı başqa üsulla yazmaq olar. İndi yazacağımız nümunə bu fərqi izah edəcək. PHP sintaksisi ilə heç vaxt qarşılaşmayanlar üçün bu daha maraqlı görsənəcək.

<body>
Hello, world!
</body>

Bəli, burda həqiqətən də heç bir PHP operatoru yoxdur və “proqram” faylının daxili statik mətndən ibarətdir. Belə çıxır ki, adi HTML mətni də PHP tərəfindən normal emal olunur? Bəli, bu belədir. Ancaq gəlin, daha mürəkkəb nümunəyə baxaq:

<!DOCTYPE html>
<html lang='az'>
    <head>
        <title>Sadə PHP skript</title>
        <meta charset='utf-8'>
    </head>
<body>
    <p>
        <?php 
        //bu günkü tarixi "gün.ay il" formatında hesablayaq
        $date = date("d.m y"); 
        //bu andakı saatı hesablayaq
        $time = date("h:i:s");
        # onları çap edək
        echo "Tarix: $date il<br />n";
        echo "Saat: $time<br />n"; 
        # Rəqəmləri çap edək
        echo "İlk 5 natural ədədlərin kvadrat və kubları:<br />n"; 
        echo "<ul>n";
        for ($i = 1; $i <= 5; $i++) { 
            echo "<li>$i kvadratı = " . ($i * $i); 
            echo ", $i kubu = " . ($i * $i * $i) . "</li>n"; 
        }
        ?>
        </ul>
    </p>
</body>
</html> 

Çox güman ki, hər hansı bir dilin sintaksisini nümunələrə baxaraq diaqram və ya sxemlərə nisbətən daha rahat “hiss etmək” olar. İrəlidə biz də bu prinsipə əsalanacağıq. Yazılmış proqramı başa düşməyə çalışaq.

Skriptin əvvəlinə diqqət yetirsək görərik ki, burda çaşdırıcı nüans var. <html>, <body> HTML teqləri burda nə iş görür? Bu həqiqətən skriptdirmi? Bax elə bu məsələdə PHP dilinin əsas üstünlüyü gizlənir: göründüyü kimi, PHP-skript adi HTML-sənəddən heç fərqlənməyə bilər.

Davam edək. Yəqin fikir verdiniz ki, skriptlər <?php teqi ilə başlayıb  ?> teqi ilə bitir. Beləliklə bu iki teq daxilindəki yazılar proqram kimi interpretasiya edilir və HTML-sənəddə görsənmir. Proqrama nəyisə çap etmək lazım gəldikdə isə echo operatorundan istifadə edilməlidir. İrəlidə onun necə işlədiyinə ətraflı baxacağıq. Beləliklə, aydın olur ki, PHP elə qurulub ki, <?php?> proqram bloklarından kənarda olan bütün yazılar olduğu kimi brauzerə ötürülür, yəni echo operatorunun nəticəsi kimi başa düşülür.

Yəqin ki, // işarəsindən sonrakı yazıların kommentariya olduğunu başa düşmüsünüz. Kommentariyalar proqramın gedişatına heç bir təsir göstərmir. Bir sətirlik kommentariyaları həmçinin, nümunədən göründüyü kimi, # işarəsi ilə də ayırmaq olar. Kommentariyalar çox sətirlik də ola bilər:

/*
kommentariya
... kommentariyanın növbəti sətri
*/

Davam edək. Növbəti sətir:

$date = date("d.m y"); 

Bu sətrin gördüyü işi izah edək. $date adlı dəyişənə date() funksiyasının qaytardığı dəyər mənimsədilir. Nəzərinizdə saxlayın ki, PHP-də mütləq şəkildə bütün dəyişənlər $ işarəsi ilə başlayır, çünki interpretasiya üçün bu daha rahatdır. Beləliklə görürük ki, PHP-də birinci olaraq dəyişənləri əvvəlcədən elan etməyə ehtiyac yoxdur (məsələn, Pascal və C dilindən fərqli olaraq), ikincisi isə onların tipi (yazı, işarə, tam ədəd və s.) heç yerdə göstərilmir. İnterpretator nəyin harda hansı tipdə olduğuna özü qərar verir. date() funksiyası haqqında qeyd etmək lazımdır ki, ona nəticənin formatını müəyyən edən bir parametr ötürülür. Bizim halımızda bunun nəticəsi məsələn, 07.11 2017 kimi olacaq.

Bütün operatorların sonunda C dilində olduğu kimi nöqtəli vergül dayanmalıdır (;). Diqqət yetirin ki, Pascal-dakı kimi yox, məhz C dilindəki kimi. Başqa sözlə, siz if-else konstruksiyasında else-dən əvvəl mütləq nöqtəli vergül yazmalı, funksiyanın başlığından sonra isə yazmamalısınız.

Növbəti sətirdə yenidən kommentariya, sonra isə əvvəlkinə bənzər digər operatoru görürük. O, $time dəyişəninə date() funksiyasını yenidən çağıraraq “saat:dəqiqə:saniyə” formatında cari saatı mənimsədir. Gələcəkdə bu faydalı funksiyanın bütün imkanları ətraflı təsfir ediləcək.

Növbəti sətirdə kommentariya, sonra isə yazı sətirlərini, tarix və saatı çap edən echo operatorları gəlir. Onlardan birinə baxaq:

echo "Tarix: $date il<br />n";

Diqqət yetirin! İstənilən dəyişənin $ işarəsi ilə başlaması onu interpretatorun yazının istənilən yerində $date əvəzinə yerləşdirməsinə imkan verir (istənilən yazının, yəni bu yazının echo-un parametri olması vacib deyil). Əslində echo konstruksiyasının parametrlərinin sayı məhtud olmadığından bu sətiri belə də yazmaq olar:

echo "Tarix:", $date, "il<br />n";

və ya yazıları birləşdirmək üçün . əməlindən istifadə etməklə belə yaza bilərik:

echo "Tarix:" . $date . "il<br />n";

Yeri gəlmişkən, yazıların konkatenasiyası üçün niyə məsələn + işarəsi yox məhz nöqtə – . istifadə edilməsi sualına sadə bir misalla cavab vermək olar:

$a = "100";
$b = "200";
echo $a + $b; // nəticə "300" 
echo $a . $b; // nəticə "100200" 

Görünür ki, + məhz rəqəmlərlə, . isə yazı ilə işləyən operator kimi istifadə edilir. Operatorların tətbiqində nyüansları növbəti mövzularda aydınlaşdırcağıq.

Dəyişənlərin yazı daxilinə birbaşa “daxil edilməsinə” aid növbəti nümunə:

$path = "/home/site/public_html"; $name = "script"; $ext = "php";
$fullPath = "$path/$name.$ext";

Belə yazılış aşağıdakı kimi yazılışdan daha “gözəl” görsənir:

$path = "/home/site/public_html"; $name = "script"; $ext = "php";
$fullPath = $path . "/" . $name . "." . $ext;

Perl terminləri ilə desək, cüt dırnaq – "" işarələri arasında yazılmış yazı daxilindəki dəyişənlər interpretasiya edilir, yəni genişlənir. PHP-də yazıları təsfir etməyin başqa üsulu da var. Bu apastrof işarələri – '' arasındakı yazılardır. Bu işarələrin daxilində dəyişənlər interpretasiya edilmir.

Beləliklə demək olar ki, skriptimizin əsas hissəsinə – ilk 5 natural ədədin kvadrat və kubunu tapan “unikal” alqoritmə çatdıq. Həmin hissə aşağıdakı kimidir:

for ($i = l; $i <= 5; $i++) { 
   echo "<li>$i kvadratı = " . ($i * $i); 
   echo ", $i kubu = " . ($i * $i * $i) . "</li>n"; 
}

Birinci sətirdə for dövr operatoru müəyyən edilib. $i sayğacdır, ona başlanğıc olaraq 1 mənimsədilib və altıya çatana qədər hər addımda vahid qədər artır, inkrementasiya edir. Sonra kvadrat və kubu çap edən blok gəlir. Biz bilərkdən bu nümunədə çap etmək əməlini bir sətirdə yox iki sətirdə yazmışıq. Burda məqsəd PHP-də də C və bənzər dillərdəki kimi bir neçə operatoru fiqurlu mötərizə daxilində qruplaşdırıb yuxarıdakı kimi bir mürəkkəb operator – tərkib operator şəklinə gətirmək mümkün olduğunu göstərməkdir.

Nəhayət, bütün bunlardan sonra PHP-in bağlayan ?> teqi, sonra səhifəni sona yetirən adi HTML-teqlər gəlir.

Yazdığımız skriptin işləməsi nəticəsində aşağıdakı kimi HTML-kod əmələ gələcək:

<!DOCTYPE html>
<html lang='az'>
<head>
    <title>Sadə PHP skript</title>
    <meta charset='utf-8'>
</head>
<body>
<p>
    Tarix: 07.11 17 il<br />
    Saat: 12:23:27<br />
    İlk 5 natural ədədlərin kvadrat və kubları:<br />
    <ul>
        <li>1 kvadratı = 1, 1 kubu = 1</li>
        <li>2 kvadratı = 4, 2 kubu = 8</li>
        <li>3 kvadratı = 9, 3 kubu = 27</li>
        <li>4 kvadratı = 16, 4 kubu = 64</li>
        <li>5 kvadratı = 25, 5 kubu = 125</li>
    </ul>
</p>
</body>
</html>

Gördüyünüz kimi, skript yazılmış hissələrin nəticələri mətnin <?php?> işarələrindən kənarda olan hissələri ilə birləşdirilib. PHP-in əsas gücü məhz buna, kodun mətnin daxilinə asanlıqla daxil edilməsinə əsaslanıb.

Skripti ayıran <?..?><?php...?> teqləri eyni hüquqa malikdir. Ancaq nəzərə almaq lazımdır ki “qısaldılmış” <?..?> teqlərinin işləməsi üçün PHP-in php.ini konfiqurasiya faylında short_open_tag  opsiyası qoşulmuş olmalıdır (susmaya görə qoşulmamış olur).  Qısaldılmış teqlər köhnəlmiş hesab edilir və onlardan istifadə etmək məsləhət görülmür.

PHP 7 nədir

PHP 7 PHP proqramlaşdırma dilinin əsas versiyalarından biridir və mobil və digər qurğular, o cümlədən paylanmış (cloude) texnologiyalar üçün veb proqramlaşdırma sahəsində inqilab edə biləcək versiya kimi təqdim edilir. Bu versiya PHP-in 2004-cü ildə istifadəyə verilmiş PHP 5 versiyasından sonrakı ən əsas yenilənmiş versiyasıdır.

PHP7-də olan yeniliklərdən aşağıdakıları qeyd etmək olar:

  • yeni <=>?? operatorları
  • proqramda baş verəcək səhvlərin kəsilmələr vasitəsilə emal edilməsi, mövcud Exception klasından başqa PHP-də standart səhfləri emal etməyə imkan verən yeni Error klası daxil edilib.
  • anonim klaslar
  • funksiyaların ötürülən arqument və qaytardığı dəyərlərinin tiplərinin elan edilməsi imkanı
  • UTF-8 simvolların dəstəklənməsi üçün xüsusi u{00FF} sintaksisi
  • massiv-sabitlər
  • ArrayAcces interfeysinə uyğunlaşan obyektlərlə list konstruksiyasına icazə verilir
  • UTF-8 simvolları dəstəkləmək üçün IntlChar klası müəyyən edilib
  • Generator klasına return açar sözü vasitəsilə qaytarılan dəyərini əldə etməyə imkan verən  getReturn() metodu əlavə edilib
  • yield from açar sözləri vasitəsilə generatorların ötürülməsi
  • requlyar Perl-ifadələrlə işləyən preg_ replace_ callback_ array()  funksiyası əlavə edilib
  • yeni random_int() və  random_bytes() funksiyaları
  • sessiyanın parametrlərini session_start() funksiyasının vacib olmayan arqumenti vasitəsilə ötürmək olur

Yeniliklərlə birlikdə köhnəlmiş konstruksiyaların bir hissəsi də PHP-dən ümumiyyətlə ləğv edilib. Onlardan aşağıdakıları göstərmək olar:

  • <?php və  ?> teqləri əvəzinə istifadə edilə bilinən <%%>, həmçinin 
  • requlyar POSIX-ifadələr (eregi-funksiyalar), onların yerinə requlyar Perl-ifadələr istifadə etmək məsləhət görülür
  • mysql modulu, onun əvəzinə obyekt yönümlü mysqli modulu və ya bundan daha çox məsləhət görülən PDO-dan istifadə etmək lazımdır
  • adı klasın adı ilə eyni olan metod formasında PHP 4-ə uyğun konstruktordan istifadə etmək qadağandır