Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
05-03 19:56
관리 메뉴

zyint's blog

네임스페이스(Namespace) 본문

예전글들

네임스페이스(Namespace)

진트­ 2009. 4. 26. 21:42

 

요약#

PHP 네임스페이스를 설명합니다. 네임스페이스는 PHP 5.3.0에서 지원합니다.

이 페이지는 완전하지 않습니다. 추후 업데이트 예정입니다.

 

 

 

네임스페이스(Namepace) 선언#

네임스페이스는 PHP문법에서 class, function, constant의 이름 중복을 피하기 위해서 사용합니다.

네임스페이스는 PHP 5.3.0에서 지원합니다.

 

하나의 파일에서의 single, multiple 네임스페이스 선언#

하나의 파일에서 하나의 Namespace 선언#

네임스페이스 선언은 php코드에서 가장 처음에 나와야 하며 namespace 키워드를 이용하여 선언합니다.

 

예제: single 네임스페이스 선언

<?php

namespace MyProject;

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


하나의 파일에서 여러개의 네임스페이스 선언#

하나의 파일에서 여러개의 네임스페이스를 선언 할 수 있고, 이를 위해서는 {}를 사용하는 방법과 {}를 사용하지 않는 두 가지 방법이 있습니다.

하나의 파일에서 여러개의 네임스페이스를 선언하는 경우 괄호를 사용하길 추천합니다.

 

예제: 추천하지 않는 방법, 하나의 파일에서 여러 네임스페이스를 선언할 때, 중괄호{}를 사용하지 않는 경우.

<?php
namespace MyProject;

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

namespace AnotherProject;

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

 

예제: 추천하는 방법, 하나의 파일에서 여러 네임스페이스를 선언할 때, 중괄호{}를 사용하는 경우.

<?php
namespace MyProject {

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

namespace AnotherProject {

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

 

 

계층적 구조의 네임스페이스#

네임스페이스는 계층적 구조로 선언할 수 있습니다. 아래 예제는 클래스, 함수, 상수를 다음과 같이 계층적으로 선언합니다.

  • 클래스: MyProject\Sub\Level\Connection
  • 함수: MyProject\Sub\Level\connect()
  • 상수: MyProject\Sub\Level\CONNECT_OK


예제:계층적 구조를 가지는 네임스페이스 선언

<?php
namespace MyProject\Sub\Level;

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

 

 

Global non-namespace#

네임 스페이스 이름을 입력하지 않고 namespace를 선언하면 global code를 뜻합니다.

 

예제: 네임스페이스 이름을 지정하지 않은 global code 예제

<?php
namespace
MyProject {
    const CONNECT_OK =1;
    class Connection {/* ... */}
    functionconnect(){/* ... */}
}
namespace { // global code
      session_start
();
    $a = MyProject\connect();
    echo MyProject\Connection::start();
}
?>

 

 

참고자료#

php.net, Defining namespaces

php.net, Declaring sub-namespaces

php.net, Defining multiple namespaces in the same file

 

이 글은 스프링노트에서 작성되었습니다.

Comments