PHP

**PHP** — dinamik veb səhifələr yaratmaq üçün nəzərdə tutulmuş proqramlaşdırma dili. PHP əsasən veb həllərin yaradılmasında istifadə edilən populyar server proqramlaşdırma dilidir. Məsələn, formadakı məlumatları qəbul edərək emal edən skript yaratmaq, saytda axtarış sistemi reallaşdırmaq və ya qeydiyyat sistemi yaratmaq mümkündür. 1994-cü ildə Rasmus Lerdorf CGI alətlərini yazmağa başladı və daha sonra 1995-ci ildə onları mükəmməlləşdirərək PHP dilini ortaya çıxartdı. Əksər hallarda PHP, Linux əməliyyat sistemi, MySQL məlumatlar bazası və Apache veb serveri qısa olaraq LAMP kimi (Linux, Apache, MySQL, *PHP*) yazılır.

## Tarixi
PHP dili 1995-ci ildə yaradılmışdır. İlk əvvəllər onun adı Personal Home Page sözlərinin baş hərflərinin birləşməsindən əmələ gəlmişdir. Daha sonralar daha ciddi ad fikirləşmək məqsədilə Hypertext Preprocessor adı verildi. Lakin HPP bir o qədər yaxşı səslənmədiyindən PHP adı qaldı.
2004-cü ildən PHP obyekt yönümlü dil kimi istifadə olundu. Məhz bu ildə Zend şirkəti PHP üçün yeni obyekt modeli tətbiq etməyə başladı. PHP5 versiyasında artıq obyektlər üzvləri(metodlar, xassələr) private, protected, public, static, final kimi ola bilər, interfeyslərdən istifadə oluna bilər.
2009-cu ildə Zend şirkəti PHP üçün Zend Server platformasını yaratdı. Zend Serverdə PHP kodlar kompilyasiya olunub bayt-kodlar şəklində qalır və bu da öz növbəsində kodun daha sürətli işləməsinə səbəb olur.

## Üstünlükləri

# PHP demək olar ki, hər platformada işləyə bilir. PHP eyni kod əsasını istifadə etdiyi üçün, UNIX, Windows (95/98/NT/2000) və Mac OS daxil olmaq üzrə 25 platformada yığılıb qurula bilər. Kodlar eyni olduğundan scriptə platformadan müstəqil olaraq çalışacaq.
# PHP, fayl uzantısı ala bilməkdədir. Tətbiqin içərisində iştirak edən nüvə mühərrik (Zend tərəfində yazıldı), bir sıra sadə kod modullarından və kod uzantılarından ibarətdir. Bu səbəblə programcılara PHP uzadılmaları yaradaraq bəzi xüsusi əməliyyatlarını edə bilmələri üçün iki variant təqdim edilir; ya uzantı modullarını yazaraq tətbiq oluna bilən bir yığma etmək, ya da PHP-nin dinamik yükləmə mexanizmi yüklənə tətbiq oluna uzatmalar yaratmaq.
# PHP bir çox HTTP server interfeysi saxlayır. PHP apacheyə, AOL server'a, Roxen və THTTPD'ye birbaşa yüklənə bilir. Alternativ olaraq CGI modulu olaraq da istifadə edilə bilər.
# PHP bir çox məlumat bazası interfeysi saxlayır. PHP, MySQL, MS SQL, Oracle, Informix, PostgreSQL və digərləri birbaşa işləyə bilir. Bunlar ikili ədəd düzenindeki interfeysləri ibarətdir və bu həllər üçün verilənlər bazasının dəstəklənmədiyi yerlərdə ODBC dəstəyi təmin edir.
# Bir PHP istifadəçisi hər hansı bir kitabxana üçün interfeys təşkil çətinlik çəkməz. Bir çox istifadəçi bu yolu seçmiş, qrafik təkrarlananları, PDF faylları, Flash Movie'leri, Cybercash xətkeş / cədvəlləri, XML, IMAP, POP və digərləri əlaqədar modullar tapa bilmişdir.
# Pear, PHP-nin davamı və Add-on anbarıdır. Pear, Perl üçün inkişaf etdirilən CPAN'e bənzəyir. Hələ də başlanğıc mərhələsində olmasına baxmayaraq pear, PHP-nin kurulumuyla birlikdə gələcək bir sıra PHP script'ini istifadəyə təqdim etməkdədir.
Xəta nəzarəti Cold Fusion ya da ASP uıygulamasındaki qədər təsirli deyil. İDE və debugger tətbiqi yoxdur. IDE'nin bir çox istifadəçi üçün çox bir əhəmiyyəti yoxdur. Ancaq debugger Zend tərəfindən yaxın gələcəkdə inkişaf etdiriləcək.
PHP və digər script dillərini nə vaxt istifadə edəcəksiniz.
Əgər bir UNIX, ya da Linux platforması üzərində iş görürsünüzsə, Perl və PHP, hər ikisi də işləriniz üçün idealdır. Hər ikisi də başlanğıc mərhələsində script yazmağı asanlaşdırır. Windows platformundaysa ASP və Cold Fusion suverenliyi var. Əslində buradakı seçim texniki olmasından çox siyasi sayılır. ASP ilə IIS ehtimalla PHP ilə IIS'den daha yaxşı. Ancaq tamamilə texniki bir altyapıda PHP, WindowsNT on, digər platformlardaki üstünlüyə çatmaqdadır.
# Elastik bir dildir. Sürətli olaraq qəliz saytlar hazırlana bilər
# Açıq Qaynaqlıdır (OpenSource). Könüllü istifadəçilər tərəfindən inkişaf və istifadə ettirilir. Öyrənmək üçün qaynaq tapmaq asandır.
# Müxtəlif istifadəçilər tərəfindən yazılmış çox sayda sinifleri ve kitabxanaları var

### Zəif tərəfləri
# İnterpretasiya olunan bir dildir, bu da proqramın gec işləməsi ilə nəticələnir.
# Dil səviyyəsində yazılmış funksiyalar üçün xüsusi bir konvensiya yoxdur. Bəzi funksiyalar bitişik, bəziləri "_" işarəsi ilə ayrılır. Məsələn: strlen və str_split.

### Məlumat Tipləri
# * PHP məlumat tiplərinə daxildir. PHP'dəki kod quruluşuna görə hər cür məlumatı yalnız bir dəfə təyin etmək ilə kodun hər yerində istifadə edə bilərsiniz. Məlumat tipləri əsas olaraq 8 dənədir:
# Boolean: Ən sadə növdür. Bir məntiqi ifadənin nəticəsi TRUE və ya FALSE olan bir düzgünlük dəyəridir. Məsələn 0, "FALSE", 0.0, "Xidmətçisiz Dize", "Boş", "NULL" FALSE (səhv) verər.
# Integer (int): Tam ədədlərdir. — Sonsuzluqdan, + sonsuzluğa qədər olan hər tam ədəd yəni onalıksız sayı bir integer. Sayı olduqları üçün "", *, * içərisinə konulmaları lazım deyil. Məsələn −312, −1, 0, 4511, 2, 636626213 kimi …
# Float: Bütün Real ədədlər yəni Gerçək Ədədlər Float növünə mənsubdur. — Sonsuzluqdan + sonsuzluğa qədər olan onluq ədədlər, rasional ədədlər, irrasyonel ədədləri daxildir. Sayı olduqları üçün "", *, * içinə yazılmaları lazım deyil. Məsələn −54233.3, −523.13125415, 0.0, 31.1, 4242.442, 2.222 kimidir.
# String (küç): Bütün yazı cinslərindən daxildir. PHPdə string təyin mütləq amma mütləq "", *, * işarələrindən hər hansı birinin içinə qoymaq lazımdır. Nümunə olaraq "Salam", "Necəsən?", 'PHP yazısıdır', 'Bu bir string' kimidir.
# Array: Bölümləri. Yəni birdən çox dəyər. PHPdə dəyərləri ifadə $ ad ifadəsini istifadə edilir. Buna görə $ ad [1], $ ad [2] kimi ifadələr ola bilər.
# Object (obj): obyektlərdir. Class yəni sinif yazarkən obyekt əsaslı istifadə edilir.
# Resource: Qaynaq tipidir. Məlumat bazasından gələn məlumatların dəyişən olmasından qaynaqlı bu tip ilə saxlanılır.
# NULL: Undefined, elan edilməmiş, Yox, Naməlum, Hökmsüz ifadələrdir. Əgər bir dəyişən "", *, * ya da empty isə NULL deyil, çünki boş bir string olar. NULL isə heç təyin olunmamış şeylərdir.

## PHPdə kod quruluşu
PHP'nin quruluşu C, Perl və Java dilinə oxşayır. PHP, XXI əsrdə məşhurlaşmışdır. PHP daxilində HTMLdən də istifadə etmək mümkündür.
Bunun üçün  bağlama tagindən istifadə edilməlidir.

#### 1. Açma və bağlama tagləri
PHPdə kod yazmağa başladığınız zaman açma və bağlama tagləri göstərilməlidir. Əks təqdirdə PHP bunu oxuya bilmir. Bunu;


```php
<?php

?>
```


yaza bilərsiniz. ` <?php ` ilə PHP kodları yazmağa başlayır və ` ?> ` ilə bitir. Əgər yazacağınız hər hansı bir kod ` ?> ` kənarında qalarsa, PHP onu qəbul etməz.

#### 2. Şərh vermə
PHPdə mövcud olan bu funksiya ilə siz yazdığınız kodlara şərh verə bilərsiniz. Məsələn;


```php
<?php
// Burada tək sətrlik şərh yaza bilərsiniz.

/* Burada isə
Çox sətrli
Kod yaza
Bilərsiniz. */
?>
```


Verilən şərhi PHP oxumur. ` // ` və ` /*...*/ ` aralığında yazılan yazılar ekranda görünmür.

#### 3. Ekrana yazdırma
PHPdə istədiyiniz bir şeyi ekrana yazdırmaq üçün iki yol mövcuddur. ` print ` və ` echo `. Bunlar arasında əsasən ` echo `dan istifadə olunur.

Məsələn:


```php
<?php
 
  echo "Bu mənim ilk işimdir.";

?>
```


Ekranda çıxacaq:


Bu mənim ilk işimdir.


PHP, ` echo ` daxilində yazılan yazını ekranda göstərər. Yazılan yazı `"..."` aralığında yazılmağı və sonuna `;` qoyulmasını tələb edir. Əks təqdirdə kod işləməyəcək.

Lakin yazacağınız yazı rəqəmlərdən ibarətdirsə o zaman `"..."` işarəsinə gərək qalmır. Məsələn;


```php
<?php
  
  echo 6;

?>
```


Ekranda çıxacaq:

6


Gördüyümüz kimi rəqəm yazarkən `"..."` işarələrinə ehtiyac qalmır. Həmçinin dəyişkəni də ekrana yazdırarkən `"..."` işarələrinə ehtiyac olmur.

#### 5. Dəyişənlər
PHP'də dəyişkən yaratmaq üçün `$` işarəsindən istifadə edilir.

Məsələn;

```php
<?php
  $deyishken = "Bu mənim ilk dəyişkənimdir."; // Burada biz ilk dəyişkəni yaratmış olduq. Dəyişkənə istədiyiniz adı verə bilərsiniz.
     echo $deyishken; // Burada isə $deyishken'i "..." daxilinə almadıq. Lakin istəsək, ala bilərik.
?>
```


Ekranda çıxacaq:

Bu mənim ilk dəyişkənimdir.


#### 6. HTML daxilində php istifadə etmək
HTML səhifələrin daxildə php proqramlar yazıla bilər. Bu zaman php bu faylı oxuyarkən onu ancaq yazı kimi qəbul edir. Lakin xüsusi teqlərə rast gəldikdə, artıq onu php kod kimi başa düşür və bağlayıcı teqə qədər olan sətirləri tərcümə etməyə başlayır. Başa düşdüyünüz kimi HTML içərisinə php kod daxil etdikdə onu xüsusi teqlər arasında yazmaq lazımdır ki, həmin hissələri php kimi tərcümə etsin. Əks halda onları da yazı kimi oxuyacaq.
Bu teqlər müxtləlif formada ola bilər.
Bunu etməyin bir çox yolu var. Məsələn:


```php
<?php echo("HTML ilə işələyərkən belə edin.\n"); ?>

<? echo ("Daha sadə olması üçün belə də mümkündür.\n"); ?>

<?= ''operator'' ?> Bu ikisi bir-birinin eynidir "<? echo ''operator'' ?>"
  
<script language="php">
   echo ("Bu şəkildə də php kodu HTML içərisinə daxil etmək olar.");
</script>
```


Bir başqa yolu isə:


```php
<?php
   echo "<html>";
   echo "<head>";
   echo "<title> Bu hissədə başlıq yazılır. </title>";
   echo "</head>";
   echo "<body>";
   echo "<h2> İstədiyiniz bir şey yazın. </h2>";
   echo "</body>";
   echo "</html>";
?>
```



Gördüyünüz kimi yuxarıdakı formada yazılan kod olduqca uzun olur. Ayrıca bu metod kiçik kodları yazmaq üçündür.
Çoxlu HTML tag'ini PHP daxilində yazırıqsa, o zaman bunun üçün alternativ bir yolumuz da var.


```php
<html><head><title> Çoxlu yazı və HTML tag'i. </title></head>
 <body>
  <h3>Çoxlu yazı və HTML tag'i.</h3>
    <?php
       $rma = <<<RMA
         Buraya istədiyimiz qədər yazı və ya HTML tag'i yaza bilərik.
  <h1>Çoxlu yazı və HTML tag'i.</h1>
                 RMA;
                  echo ("$rma");
    ?>
 </body>
</html>
```


Yuxarıda yazdığımız kodda RMA və RMA; aralığında istədiyimiz qədər HTML tagi yaza bilərik. Bu metoddan istifadə etmək üçün ilk növbədə 



### Operatorlar

Hər bir proqramlaşdırma dili kimi PHPdə də operatorlar mövcuddur. Bir kodu uzun-uzun açıqlamaq mümkün deyildir. Çünki hər bir proqramlama dili kimi PHP dilinin də müəyyən qanunları mövcuddur ki, onlara əməl etmək lazımdır. Məsələn "və", "topla", "çıx", "səhv" və digər ifadələri operatorlar vasitəsi ilə deyə bilərik. Başlanğıcda öyrənilməsi çox vacib olan operatorlar mövcuddur.

#### 1. Riyazi operatorlar

Yuxarıda göstərilənlər riyazi operatorlardır.

#### 2. Qarşılaşdırma operatorları

Aşağıda göstərilən operatorlar PHPdə ən çox istifadə edilən operatorlardır. Bunlara qarşılaşdırma operatorları deyilir. Bu operatorlar, verdiyimiz iki dəyəri, bir-biri ilə qarşılaşdırma funksiyası daşıyır. Aşağıda bu operatorlar sadalanmışdır.

Yuxarıda göstərdiyimiz operatorlar çox vacibdir. İrəlidə bu kodlara ehtiyacınız olacaq.

#### 3. Məntiq operatorları
Aşağıda məntiq operatorları və onlara aid nümunələr göstərilib. Qeyd etməliyəm ki, ikili olanlarda, həm sağ, həm də sol tərəf düzgündürsə (true) olar, biri düzgün digəri səhv və ya hər ikisi səhv olarsa, (false) olar.

### PHPdə riyaziyyat
Hər bir proqramala dili kimi, PHP də müxtəlif məsələləri həll etməyə qadirdir. Riyazi məsələlər isə bunların arasında mövcud olan ən sadələrindəndir. Aşağıda göstərilən koda nəzər salaq.



```php
<?php

$x = 1;
$y = 2;
$z = 3;

$netice = $x + $y - $z; // Burada PHP x, y və z'ə verdiyimiz dəyərlər üzərində riyazi əməllər yerinə yetirir.

echo $netice; // Alınan nəticə ekrana yazıldı.

?>
```



Ekranda çıxacaq:

0


Qeyd etdiyimiz kimi, yuxarıdakı nümunədə x, y və z'ə verdiyimiz dəyərlərin üzərində kiçik riyazi əməllə etdik. Burada əsas olan `echo` əmrindən istifadə zamanı `" "` işarəsindən istifadə edilməməsidir. Əgər `" "` işarəsindən istifadə etsəydik, PHP bizə, **1 + 2–3** olaraq göstərəcəkdi.
Burada `echo` əmrindən istifadə zamanı `()`dən istifadə edə bilərik. Növbəti nümunəyə baxaq;



```php
<?php
$x = 1;
$y = 2;
$z = 3;
$n = 4;
echo (($x + $y + $z + $n)+($x + $y + $z + $n)/2); 
?>
```



Ekranda çıxacaq:

10


Yuxarıda göstərdiyimiz nümunədə isə iki məsələni `( )` daxilinə alaraq, bir-biri ilə topladıq. Nəticəni də echo vasitəsilə ekrana yazdırdıq. Lakin burada diqqət edəcəyiniz bir şey var. Belə ki, echo əmrinin özünün də mötərizəsi var. Belə ki;
`echo( (birinci) + (ikinci) );`

kimi bir misal mövcuddur. PHP bu iki mötərizənin daxilində mövcud olan ədədləri hesablayır və sonra mötərizələri açaraq problemi həll edir. Son olaraq isə alınan nəticəni ekrana yazdırır. İlk və son mötərizə `echo`nun öz mötərizəsidir, daxildə mövcud olanlar isə misalların mötərizələridir.

### Ehtimal və yoxlama ifadələri
PHP dili, axını bol olan bir proqramlaşdırma dilidir. Bu axını yoxlamaq, filtrləmək, nəzarət altına almaq, redaktə etmək və yoxlamaq üçün bəzi ifadələr mövcuddur. Eyni zamanda bu ssenariyə riyazi ehtimal da qazandırır. Bu ifadələr, kodların daxilində iç-içə keçərək, axını qaydasına salar.

#### If, Else, Elseif
Hər bir proqramlaşdırma dilində olduğu kimi PHP dilində də **IF** ifadəsi mövcuddur. Mənası **ƏGƏR-**dir. Bu ifadə; **əgər** bu belədirsə, bunu et vəya **əgər** bu belə deyilsə, bunu etmə. Həmçinin **əgər** bu baş verərsə, bunu et vəya etmə əmrini vermək üçün istifadə edilir.


```php
<?php
$x = 1;
$y = 2;
if ($x == $y)       // Əgər göstərilən ədəd True(düzgün)dürsə...
     echo "Göstərilən dəyərlər bir-birinə bərabərdir."; // Ekrana bunu yazdır.
else               // Əgər False(səhv)dirsə...
     echo "Göstərilən dəyərlər bir-birinə bərabər deyildir."; // Ekrana bunu yazdır. 
?>
```



Yuxarıda göndərdiyimiz istəyə, PHP cavab verir;

Göstərilən dəyərlər bir-birinə bərabər deyildir.


Yuxarıda nümunə olaraq göstərdiyimiz kodu izah etsək; biz burada x və y'ə dəyərlər verdik və PHP'ə bu dəyərlərin bir-birinə bərabər və ya qeyribərabər olduğu barədə sorğu göndərdik. PHP bu dəyərləri nəzərdən keçirdi və bizə cavab verdi. `IF` əmri ümumi olaraq `ELSE` ilə istifadə edilir. Yəni **(if)** əgər bu belədirsə, bunu et, **(else)** elə deyilsə, bunu et.
**DİQQƏT:** Əgər yuxarıdakı nümunədəki kimi sadə, tək iş əmr edirsinizsə, if, elseif və ya elseni `{ }` işarələri ilə bağlamağa ehtiyac yoxdur. Lakin uzun bir prosesdirsə, burada `{ }` işarələrindən istifadə edilməsi **zəruridir!**



```php
<?php
$x = 1;
$y = 2;
if ($x == $y)
     {
     echo "Göstərilən dəyərlər bir-birinə bərabərdir.";
     echo "Yəni:<br />";
     echo $x . "və" . $y . "bir-biri ilə eyni dəyərdədir.";
     }
else
     {
     echo "Göstərilən dəyərlər bir-birinə bərabər deyildir.";
     echo "Yəni:<br />";
     echo $x . "və" . $y . "bir-biri ilə eyni dəyərdə deyildir.";
     }
?>
```



Ekranda çıxacaq:

Göstərilən dəyərlər bir-birinə bərabər deyildir. Yəni: 1 və 2 bir-biri ilə eyni dəyərdə deyildir.

Burada siz diqqət etməlisiniz ki, if ifadəsinə birdən daha çox əmr verdiyimiz üçün `{ }` işarələrindən istifadə edilməsi zəruriləşdi.

## Xarici keçidlər
* http://www.php.net/

## Həmçinin bax
* Veb texnologiyası