Командата use и именните пространства в ООП в PHP
Да предположим, че имаме следния клас Data:
<?php
namespace \Core\Admin;
class Data
{
public function __construct($num)
{
}
}
?>
Да предположим също, че има клас Page, който създава
в себе си обекти от клас Data:
<?php
namespace Users;
class Page
{
public function __construct()
{
$data1 = new \Core\Admin\Data('1');
$data2 = new \Core\Admin\Data('2');
}
}
?>
Както виждате, и двата наши класа се намират
в напълно различни именни пространства, затова
извикванията на клас Data не могат да бъдат опростени,
подобно на това, което направихме в предишния
урок. Тези извиквания обаче са много дълги
и неудобни, тъй като във всяко извикване на клас
Data трябва да се посочи дългото му
именно пространство.
За решаване на подобен проблем съществува
специална команда use. С помощта
на тази команда е достатъчно веднъж да се свърже
клас по пълното му име, и след това
може да се осъществява достъп до този клас просто
по името на класа. Вижте пример:
<?php
namespace Users;
use \Core\Admin\Data; // свързваме класа
class Page extends Controller
{
public function __construct()
{
$data1 = new Data('1'); // извикваме просто по име
$data2 = new Data('2'); // извикваме просто по име
}
}
?>
Опростете следния код с използването на
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
// Създаваме 3 обекта от един клас:
$data1 = new \Core\Users\Data('user1');
$data2 = new \Core\Users\Data('user3');
$data3 = new \Core\Users\Data('user3');
}
}
?>
Дадени са следните класове:
<?php
namespace Core\Admin;
class Controller
{
}
?>
<?php
namespace Users;
class Page extends \Core\Admin\Controller
{
}
?>
Опростете кода за наследяване на клас, като приложите
команда use.