네임스페이스
한 웹페이지에서 똑같은 함수명으로 함수를 선언하면 오류가 발생합니다.
이는 폴더에 같은 파일을 둘 수 없는 것과 마찬 가지입니다.
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(); ?>
위 코드의 결과
네임스페이스 한번 쓰려면 너무 길죠?
이를 자신이 원하는 문구로 짧게 사용할 수 있어요.
다음 시간에 알아봐요.