본문으로 바로가기

[PHP] namespace, use

category Helloworld!/PHP 2016. 3. 10. 22:55
PHP에서 다음과 같이 각각의 다른 php 파일에서 welcome이라는 함수를 불러온다.
이럴 경우 PHP에서는 어떤 welcome 함수를 가져다가 써야할지를 몰라 에러를 발생한다.
그래서 나온게 namespace 이다.
이미 다른 언어에서는 익히들 사용하고 있지만, PHP는 이번에 버전업데이트를 하면서 쓸 수 있게되었다....

사용방법은 다음과 같다.
다음과 같이 main.php에서 welcome 함수를 불러온다.
이 welcome 함수는 welcome_en.php와 welcome_kr.php에 각각 있다

//welcome_en.php
namespace  language\en;

function welcome() {
    return "Hello World!";
};


//welcome_kr.php
namespace  language\kr;

function welcome() {
    return "안녕 세계!";
};

이때 위와 같이 namespace로 구분을 해주고 다음과같이 사용하면 된다.
namespace 를 쓸 때 구분자는 역슬래쉬를 사용한다.
다음 main.php 에서 namespace test 주석 하단 부분을 보면 각 namespace에 맞는 welcome 함수를 불러온것을 알 수 있다.

//main.php
require_once 'welcome_en.php';
require_once 'welcome_kr.php';

//namespace test
echo "en : ".language\en\welcome(); //Hello world!
echo "
"; echo "kr : ".language\kr\welcome(); //안녕 세계! echo "
"; //use test use language\kr as kr; echo "use : ".kr\welcome(); //안녕 세계!

그리고 use test 주석 하단 부분을 보면
use 를 사용해 welcome_kr.php 에 있는 welcome 함수를 뜻하는 namespace의 language\kr 에 별칭을 kr 로 함 으로써
더 간단하게 welcome_kr.php 에 있는 welcome 함수를 가져다가 쓸 수 있음을 볼 수 있다.