წინა ნაწილში განვიხილეთ ცვლადები. ცვლადისაგან განსხვავებით კონსტანტა (მუდმივა) არის იდენტიფიკატორი რომელიც ცვლადის საპირისპიროდ მოქმედებს. თუკი ცვლადს შეიძლება ეცვლებოდეს მნიშნველობა კონსტანტის მნიშვნელობა არ შეიძლება შეიცვალოს.

php-ში კონსტანტისთვის მნიშვნელობის მინიჭება ხდება “define()” ფუნქციით ან “const” საკვანძო სიტყვით.

მოცემული მაგალითების გასატესტად შეგიძლიათ ისარგებლოთ ონლაინ კომპილატორ/რედაქტორებითაც:


http://sandbox.onlinephpfunctions.com/

http://www.writephponline.com/

https://ideone.com/

 

 

define()-ის სინტაქსი:

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )

 

name

კონსტანტის დასახელება.

 

value

კონსტანტის მნიშვნელობა. PHP 5-ში, მნიშვნელობა უნდა იყოს სკალარული (integer, float, string, boolean, ან NULL). PHP 7-ში მასივებიც არის ნებადართული.

 

case_insensitive

თუ დავწერთ TRUE, კონსტანტი არ იქნება დამოკიდებული იმაზე დასახელებაში სიმბოლოები მთავრულით იქნება დაწერილი თუ ნუსხურით. ავტომატურად case_insensative მითითებულია FALSE რაც ნიშნავს CONSTANT და Constant სხვადასხვა იდენტიფიკატორებია.

 

ფუნქცია აბრუნებს TRUE წარმატების დროს ან FALSE შეცდომის დროს.

მაგალითად:

define("PET","Panda");

კონსტანტა PET-ს მიანიჭებს მნიშვნელობას Panda-ს. კონსტანტის დასახელება უნდა იყოს მოქცეული ბრჭყალებში  ” ან ‘ სიმბოლოებში;

შემდეგ კონსტანტის მნიშვნელობის გამოტანა შეგვეძლება ბრძანებით:

echo PET;

როდესაც კონსტანტას ვიძახებთ მაშინ კონსტანტას დასახელება უნდა იყოს ბრჭყალების ” და ‘ სიმბოლოების გარეშე.

იმისათვის რომ გავიგოთ არსებობს თუ არა კონკრეტული დასახელების კონსტანტა, გამოიყენება ფუნქცია defined();

bool defined ( string $name )

 

name

კონსტანტის დასახელება.

ფუნქცია აბრუნებს TRUE თუ ასეთი დასახელებით მოიძებნა კონსტანტა ან FALSE თუ ვერ მოძებნის.

მაგალითად:


if(defined(PET)){

echo "ეს კონსტანტა არსებობს და მისი მნიშვნელობა არის: ".PET;

}

კონსტანტის define() ფუნქციით განსაზღვრა უნდა მოხდეს ყველანაირი კლასების, მეთოდების თუ ფუნქციების გარეთ.

მაგალითად:

function test1(){

define("PET","Panda");

}

გამოიტანს შეცდომას და კოდი არ იმუშავებს.

defines ალტერნატივა const ით კონსტანტის განსაზღვრა შესაძლებელია როგორც კლასებში, მეთოდებში და ფუნქციებში ისევე მათ გარეთ ხოლო კონსტანტის დასახელება არ უნდა მოვაქციოთ ბრჭყალებში. განსხვავებით define() ფუნქციით განსაზღვრული კონსტანტისა const-ით განსაზღვრული კონსტანტაზე წვდომა მოქმედებს იმ არეალში სადაც ის არის განსაზვრული, ხოლო define() ფუნქციით განსაზღვრის შემთხვევაში კონსტანტა გლობალური წვდომის სტატუსით არის და მასზე წვდომა შესაძლებელია პროგრამის ნებისმიერ ადგილას;

const-ით განსაზღვრის მაგალითი:

const TRANSPORT="Auto";

მაგალითად თუ ჩვენ ამ ორ კონსტანტას განვსაზღვრავთ შემდეგნაირად:


define("PET","Panda");

const TRANSPORT="Auto";

და შემდეგ ფუნქიაში მივმართავთ PET-ს მაშინ მივიღებთ მის მნიშვნელობას ხოლო TRANSPORT-ზე მიმსართვის დროს მივიღებთ შეცდომას.


function test2(){

echo PET; //იმუშავებს სწორად

echo TRANSPORT; //მივიღებთ შეცდომას და კოდი არ იმუშავებს

}

ამ ნაწილში კონსტანტების განხილვა შეიძლება ზოგისთვის არ იყო ბოლომდე გასაგები, მაგრამ როგორც ამბობენ ყველაზე კარგი მასწავლებელია პრაქტიკაა და იქამდე გატესტოთ სანამ არ გაიგებთ.

დამატებითი ინფორმაცია კონსტანტების შესახებ ინგლისურ ენაზე შეგიძლიათ იხილოთ მისამართზე http://php.net/manual/en/function.define.php