PHPda konstantalarni yaratish const va define().

topshirish / Zaxist

Golovna Konstanti - Bu muhim, chunki vaqt o'tishi bilan o'zgarmaydi. Hatto maktabda ham siz juda ko'p doimiylarni bilasiz, masalan, raqam n, raqam e, erkin tushishning tezlashishi va boshqalar. Va, shubhasiz, dasturlashtirilganda, ko'pincha kirishga ehtiyoj bor konstantalar

. Men ular haqida PHPda doimiy yaratish va vikoristovvati - Bu muhim, chunki vaqt o'tishi bilan o'zgarmaydi.:

, keling, bu statti haqida gapiraylik.
Keling, sizga qo'shiling
?>

eriydigan doimiy raqamlar aniqlang (PI, 3.1415926); echo PI; Operator aniqlash 3.1415926 yarataman doimiy P.I. va unga ma'no beradi. Keyin bu doimiyni operator orqali ko'rsatamiz aks-sado

. Hammasi juda oddiy, ammo bitta tavsiya bor, umid qilamanki, siz birinchi bo'lib tushunasiz. Obov'yazkovo yozing doimiy).

buyuk yozuvchilar. Bu shcheb tse bulo obov'yazkovo emas, ale chekka bazhano. Va bu nafaqat qabul qilinadi

PHP
Keling, sizga qo'shiling
?>

, va boshqa tillar. Bu aniq, yaxshi Operator doimiy o'zgarish PI mumkin bo'lmaydi (yutganlar bo'yicha i doimiy Keling, bitta funktsiyani ko'rib chiqaylik, ya'ni: " Chi berilgan konstantaga tayinlanadi

". Quyidagi skriptni yozamiz: if (!defined("PI")) define(PI, 3.1415926); Bu yerga

konstantaning asosi tekshiriladi . Va u uxlamagani uchun (shuning uchun).

define() funktsiyasi
?>

aylantirildi yolg'on), keyin biz ushbu konstantani ishga tushiramiz. va unga ma'no beradi Keyin biz shunchaki xulosa qilamiz. O'zingizni qanday o'rganasiz, yaratasiz va vikorizatsiya qilasiz PHP doimiysi e- bundan ham oddiyroq.

Va nihoyat, men ham xuddi shu haqda eshitishni xohlayman
PHP konstantalarida
";
.
?>

Keling, siz bilan oddiy skript yozamiz: phpinfo(); Bo'lim yakuniga yaqinlashmoqda" PHP o'zgaruvchisi". Vlasne, umuman emas , ammo, hid bor konstantalar Bu skript chiqarilish arafasida. Shubhasiz, boshqa skript tugagunga qadar, badbo'y hid allaqachon boshqa ma'nolarni olgan (barchasi emas, aniq). e Keling, sizni er-xotin sifatida ko'ramiz

, ular bilan qanday munosabatda bo'lishni tushunishingiz uchun, hatto ular tez-tez g'alaba qozonsa ham:

PHPdagi konstantalar "doimiy" bo'lib, ularning qiymatlari faqat bir marta belgilanadi va keyin o'zgartirilmaydi.

Qiymatni o'zgartirmoqchi bo'lganingizda, u o'zgarmaydi va PHP yozuvi paydo bo'ladi: "Doimiy allaqachon aniqlangan":

Aniqlash("FOO", "val");

define("FOO", "val2");

// Eslatma: Doimiy allaqachon aniqlangan echo FOO;

//> val

PHPda konstantalarni ikki usulda o'rnatishingiz mumkin:

// 1 ta aniqlash("NAME", "VALUE");

// 2 const NAME = "VALUE";

Teri usuli o'ziga xos xususiyatlarga ega, ularni tushunish uchun PHP ning teri versiyasi bilan hamma narsa qanday o'zgarganini bosqichma-bosqich ko'rib chiqamiz.

Qanday qilib doimiyni yaratish kerak

PHP 5.3 dan kam PHP 5.3 dan oldin konstantalarni faqat define() orqali aniqlash mumkin edi. const kalit so'zi 5.3 versiyasida kiritilgan.

Konstantalarni skaler yordamida ham saqlash mumkin.

Skalar o'zgaruvchilar - bu integer, float, string va boolean turlariga ega bo'lganlar.

Massiv turlari, obyekt va manbalar skaler emas.

// skalerlar aniqlaydi("FOO", 10);

define("FOO", 10.9);

aniqlash ("FOO", "val");

define("FOO", rost);

// skalerlar emas define("FOO", massiv(1));

// konstanta kiritilmagan va o'chirilgan Ogohlantirish belgilash("FOO", (ob'ekt) massivi(1));

// doimiy kiritilmagan va o'chiriladi Ogohlantirish

Versiya PHP 5.3

namoyon bo'ldi

kalit so'z

№2 const har doim ro'yxatga olinadi

const har doim katta-kichik harflarni sezadi, lekin define() katta-kichik harflarga sezgir konstantalarni yaratishga imkon beradi:

Aniqlash("NAME", "VALUE", rost);

echo NAME;

// VALUE echo nomi;

// VALUE

№3 const skayarlarni anglatmaydi

Bu faqat PHP 5.6 va undan past versiyalari uchun amal qiladi.

const ni o'zgaruvchan funktsiyalarga, ifodalarga o'tkazib bo'lmaydi, lekin define() mumkin:
Const FOO = $var;

// Tahlil xatosi const FOO = home_url ();

// Tahlil xatosi define("FOO", $ var);

// Hech qanday variant mavjud emas define("FOO", home_url()); // Kechirim yo'q#4 const PHP 5.6 dan massivlarni saqlashi va PHP 7.0 dan aniqlashi mumkin.

const FOO =;

// PHP 5.6 dan moslashtirilgan define("FOO", );

// PHP 5.6 da ishlamaydi, PHP 7.0 da ishlaydi

Xaltalar tekislangan

Konstanta sifatida define() dan foydalangan ma’qul, chunki xatoni “ushlash” uchun imkoniyatlar ko‘p va kamroq imkoniyatlar mavjud... Ayb - lekin sizda PHP 5.6 versiyasi bo‘lsa va massivni doimiy uchun saqlashingiz kerak bo‘lsa, bu yerda const. yordam berishi mumkin.

Constanti PHP klassi

Qo'shimcha yordam uchun ovozingizni yo'qotish uchun.

Ular uchun qoidalar yuqorida tavsiflanganidek: faqat skalerlarni qabul qiling, tushunmang

PHP o'zgarishlari , funksiyalar, ifodalar...
Doimiy sinflar har doim ochiq - ular shaxsiy yoki himoyalangan maqomga ega emas. Konstanta sinfning o'ziga tegishli, lekin u har bir ob'ektga va sinfga tegishli barcha ob'ektlarga (misollarga) tegishli.
Class My_Class ( const NAME = "VALUE"; // PHP 5.6 dan boshlab siz matematik ifodalardan foydalanishingiz mumkin const SEC_PER_DAY = 60 * 60 * 24; print_name() funksiyasi ( // o'z-o'zidan usul orqali o'rtadagi sinfni o'zgartirish uchun kengaytiring (sinfning o'zi) echo self ::NAME; ) ) // doimiy sinf pozasigacha // sinf misolini ishga tushirmasdan global miqyosda chaqirilishi mumkin echo My_Class::NAME; Sinflar uchun konstantalar sinfning statik kuchiga juda o'xshash.
Mening_sinfim ( const NAME = "VALUE"; statik $name = "VALUE";; ) echo My_Class::NAME; PHP 5.3.0.
Faylning katalogi doimiy sifatida aniqlanadi. Dirname (__FILE__) bilan bir xil.
Ildiz katalogidan tashqari hech qanday chiziq yo'q. __FUNCTION__
Ularning funktsiyalari bor. __KLASS__
Sinfga nom bering. Bu erda biz ismni ismlar bo'shlig'iga joylashtiramiz, qaysi sinf tovushlari (masalan, Foo Bar).
Xuddi shu narsa xususiyatlar uchun ham amal qiladi. Xususiyatlar usullari g'olib bo'lsa, qaysi sinf uchun usul g'olib bo'ladi.
__TRAIT__ PHP 5.4.0.

Im'ya Fail.

Biz belgi qo'llaniladigan nomlar bo'shlig'i bilan nima qilishni xohlaymiz (masalan, Foo Bar).

__METOD__ Men sinf usuliman. __NAMESPACE__ PHP 5.3.0. Nomlarning oqim fazosining nomi.

ClassName::class

PHP 5.5.0.
Nomlar sinfidan tashqarida (nomlarning belgilangan maydonidan).
Shuningdek, hayratlanarli: sinf.
Doimiy oddiy qiymat uchun identifikator (nom).

Nomidan ko'rinib turibdiki, skriptni bajarish jarayonida uning qiymatini o'zgartirib bo'lmaydi (sehrli konstantalar bundan mustasno, ular haqiqatda doimiy emas).
Konstantalarning nomlari registrga sezgir.

Maqtov uchun doimiylarning nomlari har doim katta harf bilan yoziladi.
Konstanta nomi boshqa PHP nomlari bilan bir xil nomlash qoidalariga o'xshash bo'lishi mumkin.
To'g'ri, u stulning harfi yoki belgisi bilan boshlanadi, undan keyin stulning bir qator harflari, raqamlari va belgilari keladi.
Doimiy nomning to'g'riligini tekshirish uchun muntazam ifoda quyidagicha ko'rinadi: ^*$

?>

Qo'shimcha funktsiya ortidagi konstantalarni hisoblashingiz mumkin: aniqlash() rezervlashlar yoki noto'g'ri nomlarni kiriting, ularning qiymatlari (faqat) funktsiya orqali olib tashlanishi mumkin doimiy()

.

Biroq, robotlar uchun tavsiya etilmaydi.

1-misol To'g'ri va noto'g'ri doimiy nomlar
// Doimiy nomlarni tuzatish
define("FOO", "nima bo'lsa ham");

O'rtada DEFINE va CONST ni tanlang va eng samarali variantga qo'shimcha ravishda DEFINE o'rniga CONST ni tanlang.

Agar sizga yordam kerak bo'lsa, o'zgaruvchi konstantadan foydalanishdan ko'ra 10-50% atrofida yaxshiroq.
Shunday qilib, ishlashni talab qiladigan vazifa uchun doimiy eng yaxshi variant emas.
$p1 = mikrovaqt (to'g'ri);<50000000;$i++) {
$x = 0;
}
uchun($i=0;$i

$x+=CNS;

$p2 = mikrovaqt (to'g'ri);

14 yil oldin
Noma'lum konstanta to'g'ri ishlatilmaganda rost deb baholanadi.
Masalan, sizda shunday narsa borligini ayting:
?>

settings.php
// disk raskadrovka rejimi

define("DEBUG", noto'g'ri);
test.php
}
?>

o'z ichiga ("settings.php");

14 yil oldin
Noma'lum konstanta to'g'ri ishlatilmaganda rost deb baholanadi.
agar (NOXLAMALAR) (
?>

settings.php
// disk raskadrovka rejimi

// Ba'zi nozik ma'lumotlarni aks ettiring.
test.php
}
?>

Qo'shiq versiyasi uchun settings.php qo'shilmagan, qo'shilmagan va DEBUG doimiysi o'rnatilmagan, PHP HARABAR nozik ma'lumotlarni chop etadi. Yechim uni baholashdir.

aniqlang ("DABUG", 0);

agar (DEBUG == 1 ) (

Endi u to'g'ri ishlaydi. Men sinf usuliman. Dastur davomida o'zgarib turadigan ba'zi muhim qadriyatlarni doimiy ravishda saqlab qolish uchun o'zgarishlar boshqarib bo'lmaydigan tarzda sodir bo'lganda, oqibatlar tez-tez uchraydi.

raqamlar (Bunday qiymatlar matematik konstantalar, fayl yo'llari, turli xil parollar va boshqalar bo'lishi mumkin., Ushbu maqsadlar uchun PHP quyidagi konstruktsiyani qabul qildi:, Qiymat dasturni (skriptni) tahrirlash jarayonida o'zgarmasligi sababli nomlanadi. PHPda konstantalar funksiya bilan belgilanadi

Bunday qiymatlar matematik konstantalar, fayl yo'llari, turli xil parollar va boshqalar bo'lishi mumkin..
Ushbu maqsadlar uchun PHP quyidagi konstruktsiyani qabul qildi: Bu funksiya quyidagi formatni oladi:
Qiymat dasturni (skriptni) tahrirlash jarayonida o'zgarmasligi sababli nomlanadi.$name
$ qiymat

$case_sen


), de:
- Men doimiyman;
?>

- doimiyning ahamiyati; Qiymat dasturni (skriptni) tahrirlash jarayonida o'zgarmasligi sababli nomlanadi.- mantiqiy turdagi majburiy bo'lmagan parametr, registrni saqlash kerakmi (to'g'ri) yoki yo'qmi (noto'g'ri) ko'rsatadi. PHPda konstantalar ma'nosiga misol: $ .

echo pi;

    // 3.14 kiriting $ );

    Qanday parametr Men sinf usuliman. qadimiyroq

    rost

    , keyin tarjimon doimiy bilan ishlashda belgilar registrini o'zgartiradi.

    oldinga belgisi holda doimiy vikoristovuyutsya deb hurmat qaytish uchun

Konstantalar va o'zgaruvchanlar o'rtasidagi o'zgarishlar:

Doimiyda dollar belgisi ko'rinishidagi prefiks yo'q ( Konstantalar qo'shimcha funktsiyalar uchun ham ishlatilishi mumkin, va chi ahamiyatli hisoblanmaydi; registrni saqlash kerakmi (to'g'ri) yoki yo'qmi (noto'g'ri) ko'rsatadi. Doimiylarni har qanday joyda ko'lamni o'zgartirmasdan aniqlash va ularga kirish mumkin;

Dastlabki ovoz berishdan keyin doimiylarni qo'shish yoki bekor qilish mumkin emas;
Konstantalar skalyar ma'noga ega bo'lishi mumkin emas.
Asosiy konstantalarni tekshirish Konstantani tekshirish uchun funksiyadan foydalanishingiz mumkin;
belgilangan()
?>

.

PHP quyidagi doimiy qiymatlarga ega:

PHP konvertatsiya qilinadigan teri skripti uchun masshtablash konstantalarining katta ro'yxatini taqdim etadi.

Ushbu konstantalarning ko'pchiligi turli modullar bilan belgilanadi va bu modullar dinamik integratsiya yoki statik katlama natijasida mavjud bo'lsa ham mavjud bo'ladi. Doimiy sinflar har doim ochiq - ular shaxsiy yoki himoyalangan maqomga ega emas. Beshta psixik konstanta mavjud bo‘lib, ularning ma’nolari ular qo‘llanilgan kontekstga qarab o‘zgaradi.

Masalan, doimiy , funksiyalar, ifodalar...
Doimiy sinflar har doim ochiq - ular shaxsiy yoki himoyalangan maqomga ega emas. skriptda ushbu konstanta ko'rsatilgan qatorda saqlanadi.
Class My_Class ( const NAME = "VALUE"; // PHP 5.6 dan boshlab siz matematik ifodalardan foydalanishingiz mumkin const SEC_PER_DAY = 60 * 60 * 24; print_name() funksiyasi ( // o'z-o'zidan usul orqali o'rtadagi sinfni o'zgartirish uchun kengaytiring (sinfning o'zi) echo self ::NAME; ) ) // doimiy sinf pozasigacha // sinf misolini ishga tushirmasdan global miqyosda chaqirilishi mumkin echo My_Class::NAME; Maxsus konstantalar katta-kichik harflarni sezmaydi va ularning ko'rsatmalar ro'yxati quyida keltirilgan:
Mening_sinfim ( const NAME = "VALUE"; statik $name = "VALUE";; ) echo My_Class::NAME; men
Faylning katalogi doimiy sifatida aniqlanadi. Faylning joriy qatori.
Ildiz katalogidan tashqari hech qanday chiziq yo'q. Keyingi usul - oqim faylining nomi.
Ularning funktsiyalari bor. Fayl haqida ma'lumot.
Sinfga nom bering. Agar u kiritilgan faylga kiritilgan bo'lsa, u holda kiritilgan fayl katalogiga qaytariladi.
Xuddi shu narsa xususiyatlar uchun ham amal qiladi. Bu dirname(__FILE__) ga teng.

Ushbu katalog nomi, agar u ildiz katalogi bo'lmasa, keyingi chiziqqa ega emas.

Ularning funktsiyalari bor. if (!defined("PI")) define(PI, 3.1415926);.

(PHP 4.3.0 da qo'shilgan.)

Sinfga nom bering.

(PHP 4.3.0 da qo'shilgan.) Xususiyat nomi.

Belgilar nomi e'lon qilingan nom maydonini o'z ichiga oladi (masalan, Foo \ Bar). Men sinf usuliman.(PHP 5.0.0 da qo'shilgan)

Mavzu nom maydonining nomi. raqamlar Dodatkovo

Bizda doimiylar haqida shunday belgi bor.

Til dasturlashda doimiy tushunchalarini qanday tushunish va qanday ovoz berish va g'alaba qozonish haqida hayron bo'lish

PHPda doimiy va doimiy tushunchalar

Doimiy so'z sizga matematikadan tanish bo'lishi mumkin:

“Matematik konstanta

- qiymati o'zgargan miqdor.

Agar biz o'zgarishlarni o'zgartirmoqchi bo'lsak, u holda xirillash to'satdan (rahm-shafqatli paytlarda) o'zgarish qiymatini o'zgartirishi va siz rejalashtirganingizdan boshqacha ishlashi mumkin.

Doimiy konstantalardan foydalanish doimiyni e'lon qilishda siz ko'rsatgan qiymatlar o'zgarishsiz qolishini ta'minlaydi.

Yangi iPhone X, narxi minglab dollarga etadi, dedi ularning hukmdorlari.