PHP OOP 네임스페이스에서의 클래스 별칭
서로 다른 네임스페이스에 속하는 두 개의 Data 클래스가 있다고 가정해 보겠습니다.
어떤 클래스에서 이 두 클래스의 객체가 모두 필요하다고 해보죠:
<?php
namespace Project;
class Test
{
public function __construct()
{
$data1 = new \Core\Users\Data; // 객체 생성
$data2 = new \Core\Admin\Data; // 객체 생성
}
}
?>
use 명령을 통해 클래스 호출을 단순화하기로 결정했다고 가정해 보겠습니다.
이 경우 문제가 발생합니다: 두 클래스 모두 Data라는 이름을 가지고 있어 이름 충돌이 일어납니다:
<?php
namespace Project;
// 이름 충돌이 발생합니다:
use \Core\Users\Data; // 첫 번째 클래스 연결
use \Core\Admin\Data; // 두 번째 클래스 연결
class Test
{
public function __construct()
{
$data1 = new Data;
$data2 = new Data;
}
}
?>
이 문제를 해결하기 위해, 연결되는 클래스에 별칭 — 해당 파일에서 접근할 이름 — 을 지정할 수 있게 해주는 특별한 as 명령이 존재합니다.
Data 클래스들의 이름을 변경해 봅시다:
<?php
namespace Project;
use \Core\Users\Data as UsersData;
use \Core\Admin\Data as AdminData;
class Test
{
public function __construct()
{
$data1 = new UsersData;
$data2 = new AdminData;
}
}
?>
use를 사용하여 다음 코드를 단순화하세요:
<?php
namespace Project;
class Test
{
public function __construct()
{
$pageController = new \Resource\Controller\Page;
$pageModel = new \Resource\Model\Page;
}
}
?>
use를 사용하여 다음 코드를 단순화하세요:
<?php
namespace Project\Data;
class Test
{
public function __construct()
{
$pageController = new \Project\Data\Controller\Page;
$pageModel = new \Project\Data\Model\Page;
}
}
?>