happy cat image

everdevel

Web Technology, 에버디벨

UI 변경

EEOS

에버디벨 책을 학습할 수 있는 클라우드 개발 환경을 제공합니다.
개발환경구축없이 태블릿에서도 개발할 수 있는 책의 예제와 프로젝트
오직 당신을 위한 스토리지, URL, DB, 무제한 트래픽
그리고 웹기반 개발환경을 제공합니다.

더 알아보기
에버디벨이 만든 클라우드 개발환경을 소개합니다.

네임스페이스

한 웹페이지에서 똑같은 함수명으로 함수를 선언하면 오류가 발생합니다.
이는 폴더에 같은 파일을 둘 수 없는 것과 마찬 가지입니다.
a라는 폴더에 b.php 파일을 2개 둘 순 없지만 a라는 폴더에 b.php 파일을 두고 b라는 폴더를 생성해 b.php 파일을 둘 수 있습니다.
폴더에 대해 언급한 이유는 namespace(이하 네임스페이스)를 폴더라고 생각하면 이해하기 쉽기 때문입니다. 다음과 같이 동일한 이름의 함수명을 사용하면 에러가 발생합니다.

<?php
    function hello(){}
    function hello(){}
?>

위 코드의 결과

위와 같이 에러가 발생하죠. 위의 코드를 네임스페이스를 사용해서 에러가 안나게 해봅시다.

네임스페이스 사용 방법

namespace 네임스페이스명;
함수
namespace 네임스페이스명;
함수

자 그럼 한번 해봅시다.

<?php
    namespace hello;

    function hello()
    {
        return '첫번째 hello함수입니다.';
    }

    namespace hello2;

    function hello()
    {
        return '두번째 hello함수입니다.';
    }
?>

위 코드를 실행하면 오류가 발생하지 않습니다. ^^
첫번째 hello함수는 hello그룹에 속하며, 두번째 hello함수는 hello2그룹에 속한다고 보시면 됩니다.

그럼 네임스페이스를 사용한 코드의 함수를 호출하는 방법에 대해 알아볼까요?

네임스페이스를 사용하여 함수 호출 방법

\네임스페이스명\함수명()

그럼 예제를 통해서 봅시다.

<?php
    namespace hello;

    function hello()
    {
        return '첫번째 hello함수입니다.';
    }

    namespace hello2;

    function hello()
    {
        return '두번째 hello함수입니다.';
    }

    echo \hello\hello();
    echo '<br>';
    echo \hello2\hello();
?>

이렇게 네임스페이스에 대해 알아봤습니다. 네임스페이스를 사용하면 같은 함수처럼 같은 클래스명을 선언할 수도 있습니다.
똑같습니다.

네임스페이스를 사용하여 인스턴스 생성 방법

$변수명 = new \네임스페이스명\클래스명
<?php
    namespace hello;

    class hello
    {
        function hello()
        {
            return '첫번째 hello 클래스입니다.';
        }
    }


    namespace hello2;

    class hello
    {
        function hello()
        {
            return '두번째 hello 클래스입니다.';
        }
    }


    $helloFirst = new \hello\hello;
    echo $helloFirst->hello();
    echo '<br>';
    $helloSecond = new \hello2\hello;
    echo $helloSecond->hello();
?>

위 코드의 결과

네임스페이스 한번 쓰려면 너무 길죠?
이를 자신이 원하는 문구로 짧게 사용할 수 있어요.
다음 시간에 알아봐요.

강좌로 돌아가기