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, PI
və pi
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-darn
, Mac OS X-dənr
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 NULL –
null
dəyərini saxlayır
Qeyd edək ki, true
, false
və null
sabitlərinin böyük hərflərlə də – TRUE
, FALSE
və NULL
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); ?>