PHP-də OOP-də namespace məkanında nisbi yollarlar
Tutaq ki, index.php faylında
aşağıdaki çağırış baş verir:
<?php
namespace Admin\Data;
new \Core\Controller;
?>
Artıq bildiyiniz kimi, klasa müraciət edərkən onun namespace məkanının qarşısında əks səliqə yazmaq lazımdır. Əslində bu mütləq deyil. Əgər bu səliqə yazılmasa, onda çağırılan namespace məkanı cari namespace-ə nisbətən hesablanacaq. Nümunəyə baxın:
<?php
namespace Admin\Data;
new Core\Controller; // ekvivalentdir \Admin\Data\Core\Controller
?>
Iki klas verilib:
<?php
namespace Modules\Shop\Core;
class Cart
{
}
?>
<?php
namespace Modules\Shop;
class UserCart extends \Modules\Shop\Core\Cart
{
}
?>
Kodumuzun namespace-lərinin üst-üstə düşən hissəsi olduğunu nəzərə alaraq, klas mirasları üçün kodu sadələşdirin.
Iki klas verilib:
<?php
namespace Core\Data;
class Controller
{
}
?>
<?php
namespace Core\Data;
class Model
{
}
?>
Bu klasların obyektləri index.php
faylında belə yaradılır:
<?php
namespace Core\Data;
$controller = new \Core\Data\Controller;
$model = new \Core\Data\Model;
?>
Obyektlərin yaradıldığı namespace məkanını nəzərə alaraq, obyekt yaratmaq üçün kodu sadələşdirin.