Sabitlər

Proqrmalaşdırma zamanı elə parametrlər olur ki, proqramın yerinə yetirilməsi zamanı onların qiyməti dəyişmir. Bu, riyaziyyata aid sabit ədədlər, direktoriyanın, faylın yerləşdiyi yerin yolu, parollar və s. ola bilər. Məhz belə məqsədlər üçün PHP-də xüsusi konstruksiya, sabitlər nəzərdə tutulub (ing:constant“, rus: константа).

Sabitlərin dəyişəndən fərqi ondadır ki, sabitlərə dəyəri proqramın yerinə yetirilməsi zamanı yalnız bir dəfə mənimsətmək olar və onların identifikatorlarının qarşısında $ işarəsi yazılmır. Məsələn:

// Qəbul edək ki, əvvəldən PI sabiti 3.1416... kimi təyin edilib
$a = 2.34 * sin(3 * PI / 8) + 5;
// использование константы
echo "Bu PI ədədidir";
// "Bu PI ədədidir" çap olunacaq
echo "Bu ". PI . " ədədidir";
// "Bu 3.1416... ədədidir" çap olunacaq

Əslində, sabitlərin adının solunda “dollar” işarəsinin yazılmaması bir tərəfdən rahatlıqdır. Digər tərəfdən isə göründüyü kimi, bu həm də çatışmamazlıqdır, artıq sabitləri yazı sətrinin daxilində birbaşa istifadə edə bilmirik. Sabitlərin adları reqistrə həssasdır və buna görə də məsələn, PIpi sabitləri tam fərqli iki sabitlərdir.

PHP-də interpretatorun özü tərəfindən elan edilmiş sabitlər və proqramçı tətəfindən təyin edilən sabitlər var.

Elan edilmiş sabitlər

PHP-də interpretatorun özü tərəfindən elan edilmiş bir neçə sabitlər var.

  • __FILE__  – hal hazırda yerinə yetirilən proqramın yerləşdiyi faylın adını saxlayır
  • __LINE__ – interpretatorun hal hazırda yerinə yetirdiyi komandanın yerləşdiyi sətrin sıra nömrəsi. Bu, proqramın yerinə yetirilməsi zamanı hər dəfə dəyişən, özünəməxsus sabitdir. (Həmçinin, idarəetməni digər fayla ötürəndə __FILE__ sabiti də dəyişir)
  • __FUNCTION__ – işə salınmış cari funksiyanın adı
  • __CLASS__ – cari klassın adı
  • PHP_VERSION – PHP interpretatorun versiyası
  • PHP_OS – hal-hazırda PHP-in işlədiyi ƏS-in adı
  • PHP_OS – hal-hazırda PHP-in işlədiyi ƏS-ə uyğun sətrin sonunu bildirən simvol: Linux-da \n, Windows-da \r\n, Mac OS X-də \n\r kimi müəyyən olunur.
  • true və ya TRUE – bu sabit məntiqi “doğru” dəyərini saxlayır
  • false və ya FALSE – məntiqi “yanlış” dəyərini saxlayır
  • null və ya NULLnull dəyərini saxlayır

Qeyd edək ki, true, falsenull sabitlərinin böyük hərflərlə də  – TRUE, FALSENULL kimi yazılmasına icazə verilir. Ancaq, gələcəkdə baxacağımız PSR-2 standartı bunların kiçik hərflərlə yazılmasını tələb edir.

Sabitlərin təyin edilməsi

PHP-də özümüzün, xüsusi sabitlərini yaratmaq üçün define() konstruksiyasından istifadə edilir və bu konstruksiya aşağıdakı kimi təyin edilib:

void define(string $name, string $value, bool $case_sen = true);

Göründüyü kimi, define() $name-də göndərilmiş ada uyğun $value qiyməti mənimsədilmiş yeni sabit müəyyən edir. Vacib olmayan $case_sen parametri true olarsa irəlidə proqramın gedişatında sabitin adının reqistrləri də nəzərə alınır, əks halda nəzər alınmır. Sabitin silinməsi, ləğv edilməsi və yenidən təyin edilməsinə icazə verilmir. Nümunə:

define("pi", 3.14);
define("str", "Test string");
echo sin(pi / 4);
echo str;

Sabitin yaradılması zamanı adının dırnaq işarələri arasında yazılmasına fikir vermək lazımdır. Həmçinin, eyni adda ikinci sabiti təyin etməyin mümkün olmadığını nəzərdən qaçırmaq olmaz, bu halda proqramın yerinə yetirlməsi zamanı səhv çıxacaq.

Sabitin mövcudluğunun yoxlanılması

PHP-də həmçinin verilmiş adda sabitin mövcud olmamasını və ya təyin edilib edilməməsini yoxlayan funksiya mövcuddur:

bool defined(string $name);

$name adında sabit mövcuddursa true qaytarır.

Dinamik təyin edilmiş sabitlər

Hərdən, sabitləri dinamik olaraq proqramın yerinə yetirilməsi zamanı təyin etmək lazım gəlir. Bu zaman onların adını əvvəlcədən müəyyən etmək olmadığından proqramın mətnində əvvəldən onları yazmaq olmur. Belə hallarda sabitin qiymətini oxumaq üçün constant() funksiyasından istifadə edilir.

mixed constant(string $name)

Funksiya $name adlı sabitin dəyərini qaytarır. Göstərilmiş adda sabit mövcud deyilsə funksiya xəbərdalıq generasiya edir.

Növbəti nümunədə mt_rand() funksiyası ilə $index dəyişəninə 1-dən 10-a kimi təsadüfi bir rəqəm mənimsədilir və ondan sabitin formalaşdırılmasında istifadə edilir. Nəticədə hər dəfə proqram işə salınarkən sabitin adı mümkün 10 addan biri ola bilər. Belə sabitin dəyərini yalnız constant() funksiyası ilə əldə etmə olar.

<?php
  // 1-dən 10-a kimi təsadüfi bir ədəd generasiya edirik
  $index = mt_rand(1, 10);   // sabitin adı formalaşdırılır
  $name = "VALUE{$index}";  
  // Dinamik adlı sabiti təyin edirik
  define($name, 1);  
  echo constant($name); 
?>

Leave a Reply