PHP nomlar fazolari (namespaces)
PHP nom maydonlari
PHP nom fazolari classlar, interfeyslar, funksiyalar va konstantalar o‘rtasidagi nomlash ziddiyatlarini oldini olish uchun ishlatiladi.
Nom maydonlari tegishli kodlarni nom ostida guruhlash uchun ishlatiladi - kodingiz o‘sib ulg‘ayganida yoki bir nechta manbalardan kodni ishlatganda nomlash ziddiyatlarini oldini olish uchun.
Nima uchun ism maydonlaridan foydalanish kerak?
- Nomlar to‘qnashmasligi uchun, ayniqsa yirik loyihalarda
- Kodni mantiqiy guruhlarga ajratish
- Kodingizni kutubxonalardagi koddan ajratish uchun
- Bir xil nomni bir nechta classlar uchun mojarolarsiz ishlatishga ruxsat berish
Tasavvur qiling, sizda HTML jadvalini tavsiflovchi bir qator classlar mavjud: jadval, qator va hujayra. Bundan tashqari, sizda mebellarni tavsiflovchi boshqa classlar to‘plami mavjud: Stol, stul va yotoq. Bu yerda nomlar bo‘shliqlari ushbu classlarni ikki xil guruhga ajratish uchun ishlatilishi mumkin, bu ikkita Jadval classini aralashtirishning oldini oladi.
Ismlar maydonini e’lon qilish
Nomlar bo‘shliqlari PHP faylining boshida
namespace kalit so‘zidan va keyin nomdan foydalangan holda e’lon qilinishi kerak.
nom maydoni uchun.
Bu yerda biz Html nomli fazoni e’lon qilamiz:
<?php
namespace Html;
?>
Eslatma: Nom maydoni deklaratsiyasi PHP faylidagi birinchi narsa bo‘lishi kerak! Quyidagi kod yaroqsiz:
<?php
echo "Hello World!";
namespace Html;
...
?>
Ushbu PHP faylida e’lon qilingan barcha classlar, interfeyslar, funksiyalar va konstantalar endi Html nom maydoniga tegishli bo‘ladi:
Misol
Html nom maydonida Table classini yarating:
<?php
namespace Html;
class Table {
public $title = "";
public $rows = 0;
public function info() {
echo "<p>$this->title has $this->rows rows.</p>";
}
}
$table = new \Html\Table();
$table->title = "My table";
$table->rows = 5;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$table->info();
?>
</body>
</html>
O‘zingiz sinab ko‘ring »
Keyinchalik tashkil qilish uchun ichki nomlar bo‘shliqlari bo‘lishi mumkin:
Sintaksis
Code nomli nom maydoni ichida Html nomli fazoni e’lon qiling:
<?php
namespace Code\Html;
?>
Nom maydonlaridan foydalanish
Nom maydoni deklaratsiyasidan keyingi har qanday kod nomlar maydoni ichida ishlaydi, shuning uchun nomlar maydoniga tegishli classlar hech qanday kvalifikatsiyalarsiz yaratilishi mumkin. Nom maydonidan tashqaridagi classlarga kirish uchun class unga nom maydoni biriktirilgan bo‘lishi kerak.
Misol
Html nom maydonidagi classlardan foydalaning:
<?php
$table = new Html\Table();
$row = new Html\Row();
?>
O‘zingiz sinab ko‘ring »
Bir vaqtning o‘zida bir xil nomlar maydonidagi ko‘plab classlar ishlatilsa, shunday bo‘ladi
namespace kalit so‘zidan foydalanish osonroq:
Misol
Html nom maydonidagi classlardan Html\ kvalifikatoriga ehtiyoj sezmasdan foydalaning:
<?php
namespace Html;
$table = new Table();
$row = new Row();
?>
O‘zingiz sinab ko‘ring »
Nom maydoni taxalluslari
Yozishni osonlashtirish uchun nom maydoni yoki classga taxallus berish foydali bo‘lishi mumkin. Bu use kalit so‘zi bilan amalga oshiriladi:
Misol
Nom maydoniga taxallusni bering:
<?php
use Html as H;
$table = new H\Table();
?>
O‘zingiz sinab ko‘ring »
Misol
Classga taxallus bering:
<?php
use Html\Table as T;
$table = new T();
?>
O‘zingiz sinab ko‘ring »
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
