PHP-də OOP-də Adlar Fəzasının Alt Fəzaları
Indi tutaq ki, bizim daha mürəkkəb vəziyyətimiz var:
admin üçün iki Page sinfi etmək lazımdır
- biri səhifənin məlumatları ilə, digəri isə bu məlumatların
təqdimatı ilə. Tutaq ki, birinci sinif
/admin/data/page.php faylındadır, ikincisi isə
- /admin/view/page.php faylındadır.
Əvvəlki dərslərdə biz artıq qərar vermişdik ki, admin qovluğundakı
bütün siniflər Admin adlar fəzasına
aid olacaq. Lakin, indi bu eyni adlar fəzasında iki sinfin
konflikti yaranır. Problemi həll etmək üçün əlavə
adlar fəzasının alt fəzaları yaradıla bilər. Məsələn,
Admin adlar fəzası, onun içində isə
Data və View alt fəzaları yaradıla bilər. Belə halda
bu alt fəzaların adları sadəcə tərs çəp ilə yazılır
- həm adlar fəzası təyin edərkən, həm də sinif obyekti yaradarkən.
Burada aydınlaşdırmaq lazımdır ki, alt fəzaların iç-içəlik səviyyəsi məhdud deyil (alt fəzalarda alt-alt fəzalar yaradıla bilər və s.).
Beləliklə, gəlin yuxarıda təsvir etdiyimiz nümunəni
bitirək. /admin/data/page.php faylındakı Page sinfi üçün
Admin\Data adlar fəzasını göstərək:
<?php
namespace Admin\Data;
class Page
{
}
?>
/admin/view/page.php faylındakı Page sinfi üçün
Admin\View adlar fəzasını göstərək:
<?php
namespace Admin\View;
class Page
{
}
?>
Gəlin siniflərimizin obyektlərini yaradaq:
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
Tutaq ki, sizin modules/cart qovluğunuz var.
Elə edin ki, bu qovluqdakı bütün siniflər
Modules\Cart adlar fəzasına aid olsun.
Tutaq ki, sizin modules/shop/cart/ qovluğunuz var.
Elə edin ki, bu qovluqdakı bütün siniflər
Modules\Shop\Cart adlar fəzasına aid olsun.