동일한 파일에 여러 네임스페이스 정의

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

동일한 파일에 여러 네임스페이스를 선언할 수도 있습니다. 두 가지 허용되는 구문이 있습니다.

예제 #1 여러 네임스페이스 선언, 간단한 조합 구문

                  
<?php
namespace MyProject;

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }

namespace AnotherProject;

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
?>
                  
                

이 구문은 네임스페이스를 단일 파일로 결합하는 데 권장되지 않습니다. 대신 대체 괄호 구문을 사용하는 것이 좋습니다.

예제 #2 여러 네임스페이스 선언, 대괄호 구문

                  
<?php
namespace MyProject {

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
}

namespace AnotherProject {

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
}
?>
                  
                

여러 네임스페이스를 동일한 파일에 결합하는 것은 코딩 방식으로 강력히 권장되지 않습니다. 주요 사용 사례는 여러 PHP 스크립트를 동일한 파일로 결합하는 것입니다.

네임스페이스가 없는 전역 코드를 네임스페이스 코드와 결합하려면 대괄호로 묶인 구문만 지원됩니다. 전역 코드는 다음과 같이 네임스페이스 이름이 없는 네임스페이스 문에 넣어야 합니다.

예제 #3 여러 네임스페이스 및 네임스페이스 없는 코드 선언

                  
<?php
namespace MyProject {

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
}

namespace { // global code
session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}
?>
                  
                

여는 선언문을 제외하고는 PHP 코드가 네임스페이스 대괄호 외부에 존재할 수 없습니다.

예제 #4 여러 네임스페이스 및 네임스페이스 없는 코드 선언

                  
<?php
declare(encoding='UTF-8');
namespace MyProject {

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
}

namespace { // global code
session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}
?>