Relativa sökvägar i namnområden i OOP i PHP
Låt oss säga att i filen index.php sker
följande anrop:
<?php
namespace Admin\Data;
new \Core\Controller;
?>
Som du redan vet, när du refererar till en klass bör ett omvänt snedstreck skrivas före dess namnområde. Egentligen är detta inte nödvändigt. Om detta snedstreck inte skrivs, kommer det anropade namnområdet att beräknas relativt till det aktuella namnområdet. Se exemplet:
<?php
namespace Admin\Data;
new Core\Controller; // motsvarar \Admin\Data\Core\Controller
?>
Två klasser är givna:
<?php
namespace Modules\Shop\Core;
class Cart
{
}
?>
<?php
namespace Modules\Shop;
class UserCart extends \Modules\Shop\Core\Cart
{
}
?>
Förenkla koden för arv av klassen, med hänsyn till att namnområdena för våra klasser har en överlappande del.
Två klasser är givna:
<?php
namespace Core\Data;
class Controller
{
}
?>
<?php
namespace Core\Data;
class Model
{
}
?>
Så här skapas objekt av dessa klasser i
filen index.php:
<?php
namespace Core\Data;
$controller = new \Core\Data\Controller;
$model = new \Core\Data\Model;
?>
Förenkla koden för att skapa objekt, med hänsyn till namnområdet där objekt av våra klasser skapas.