PHP OOP에서 use 명령어와 네임스페이스
다음과 같은 Data 클래스가 있다고 가정해 봅시다:
<?php
namespace \Core\Admin;
class Data
{
public function __construct($num)
{
}
}
?>
또한 내부에서 Data 클래스의 객체를 생성하는
Page 클래스도 있다고 가정합니다:
<?php
namespace Users;
class Page
{
public function __construct()
{
$data1 = new \Core\Admin\Data('1');
$data2 = new \Core\Admin\Data('2');
}
}
?>
보시다시피, 우리의 두 클래스는 완전히 다른
네임스페이스에 있기 때문에, 이전 강의에서 했던 것처럼
Data 클래스 호출을 간소화할 수 없습니다.
그러나 이 호출들은 각 클래스 호출마다 긴
네임스페이스를 지정해야 하기 때문에 매우 길고
불편합니다.
이러한 문제를 해결하기 위해 특별한 명령어
use가 존재합니다. 이 명령어를 사용하면
클래스를 전체 이름으로 한 번만 연결(import)하면,
그 후에는 클래스 이름만으로 해당 클래스에 접근할 수
있습니다. 예를 참고하세요:
<?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 명령어를 적용하여 클래스 상속 코드를
간소화하세요.