Команда 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
.