PHP OOP에서 네임스페이스 구문
클래스에 네임스페이스를 지정하려면
해당 클래스가 저장된 파일의 첫 번째 줄에
namespace 명령어를 작성하고,
그 뒤에 공백을 두고 해당 네임스페이스의
이름을 적어야 합니다.
클래스가 어떤 네임스페이스에 속해 있다면 클래스 객체를 생성할 때 클래스 이름뿐만 아니라 네임스페이스도 역슬래시로 구분하여 지정해야 합니다. 예제를 통해 살펴보겠습니다.
네임스페이스에 속하지 않는 Page 클래스가
있다고 가정해 봅시다. 이 경우 이 클래스의 객체는
다음과 같이 생성합니다:
<?php
$page = new Page;
?>
이제 이 클래스가 Admin 네임스페이스에
속한다고 가정해 봅시다. 이 경우 이 클래스의 객체는
이미 다음과 같이 생성하게 됩니다:
<?php
$page = new \Admin\Page;
?>
위에서 설명한 클래스 충돌을 방지하기 위해 사용자용 클래스와 관리자용 클래스를 서로 다른 네임스페이스로 분리해 보겠습니다.
파일 /admin/page.php의 Page 클래스에 대해
Admin 네임스페이스를 지정하겠습니다:
<?php
namespace Admin;
class Page
{
}
?>
파일 /users/page.php의 Page 클래스에 대해
Users 네임스페이스를 지정하겠습니다:
<?php
namespace Users;
class Page
{
}
?>
이제 파일 /index.php에서
두 Page 클래스의 객체를
생성해 보겠습니다:
<?php
require_once '/admin/page.php';
require_once '/users/page.php';
$adminPage = new \Admin\Page;
$usersPage = new \Users\Page;
?>
core 폴더와 project 폴더가 있다고 가정합니다.
각 폴더에는 자신의 Controller 클래스가 있습니다.
이 클래스들이 서로 다른 네임스페이스에 속하도록 만드세요.
파일 index.php에서 두 클래스의 객체를 생성하세요.