Căi relative în spațiul de nume în OOP în PHP
Să presupunem că în fișierul index.php are loc
următorul apel:
<?php
namespace Admin\Data;
new \Core\Controller;
?>
După cum știți deja, atunci când accesați o clasă înaintea spațiului său de nume ar trebui să scrieți backslash. De fapt, acest lucru nu este obligatoriu. Dacă nu scrieți acest backslash, atunci spațiul de nume apelat va fi calculat relativ la spațiul de nume curent. Uitați-vă la exemplu:
<?php
namespace Admin\Data;
new Core\Controller; // echivalent cu \Admin\Data\Core\Controller
?>
Sunt date două clase:
<?php
namespace Modules\Shop\Core;
class Cart
{
}
?>
<?php
namespace Modules\Shop;
class UserCart extends \Modules\Shop\Core\Cart
{
}
?>
Simplificați codul pentru moștenirea clasei, ținând cont de faptul că spațiile de nume ale claselor noastre au o parte care coincide.
Sunt date două clase:
<?php
namespace Core\Data;
class Controller
{
}
?>
<?php
namespace Core\Data;
class Model
{
}
?>
Astfel se creează obiecte ale acestor clase în
fișierul index.php:
<?php
namespace Core\Data;
$controller = new \Core\Data\Controller;
$model = new \Core\Data\Model;
?>
Simplificați codul pentru crearea obiectelor, ținând cont de spațiul de nume în care se creează obiectele claselor noastre.