Min's dev-log
[PHP] 네임스페이스 본문
네임스페이스를 알기 전에 파일을 먼저 생각해보자.
파일은 데이터를 저장하기 위한 작은 단위이다. 이는 파일명으로 식별이 된다.
파일의 수가 많아지면서 효과적으로 관리하기 위해 고안된 것이 디렉토리이다.
디렉토리(폴더) == 파일의 공간
파일의 공간을 만들어 놓고 공간에 파일을 고립시키는 걸 통해서 같은 이름의 파일들이 충돌하지 않도록 하는 것
=> 디렉토리(폴더)를 사용하는 이유이다.
네임스페이스란 간단하게 디렉토리와 같은 것이라고 생각하자.
하나의 애플리케이션에는 다양한 모듈을 사용한다.
이때 서로 다른 개발자에 의해 만들어지기 때문에 같은 이름을 쓰는 경우가 생길 수 있다.
네임스페이스에서의 네임은 함수, 상수, 클래스 등의 이름을 말한다.
네임스페이스는 같은 이름을 가지고 있는 것들끼리 충돌하는 것(이름 중복)을 방지하기 위한 수단이다.
PHP에서는 같은 이름의 함수,상수, 클래스가 정의가 되면 에러를 발생시킨다.
어떤 언어들은 에러를 발생시키지 않고 마지막에 작성한 것이 우선 순위를 갖게 되는데
이것 또한 의도가 왜곡될 가능성이 있기 때문에 문제이다.
=> 이럴 때 사용할 수 있는 것이 네임스페이스이다.
만약 환영 인사를 언어별로 다르게 하고 싶다면 어떻게 해야 할까?
위의 코드에는 PHP 구문의 종료를 의미하는 닫히는 기호가 없다. 닫히는 기호는 생략이 가능하다.
※ PHP는 외부의 php 파일을 로드하는 방법으로 4가지 형식을 제공한다.
- include
- include_once
- require
- require_once
_once라는 접미사는 파일을 로드 할 때 단 한번만 로드하면 된다는 의미이다.
위의 코드는 아래와 같은 에러를 발생시킨다.
welcome()이라는 함수를 중복 선언했기 때문이다.
이 함수가 2번라인의 파일의 함수인지, 3번라인의 파일의 함수인지 알 수 없기 때문이다.
이런 경우 네임스페이스를 사용할 수 있다.
▼
▲ 로드되는 파일 상단에 namespace를 사용해서 네임스페이스를 만들었다.
▲ 네임스페이스를 사용할 때는 함수 앞에 네임스페이스의 이름을 붙여서 사용하면 된다.
이렇게 되면 동일한 이름의 함수를 하나의 PHP 애플리케이션 안에서 사용할 수 있게 된다.
네임스페이스는 함수 뿐만 아니라 클래스와 상수에 대해서도 사용할 수 있다.
'PHP' 카테고리의 다른 글
[PHP] 디렉토리 제어 (0) | 2023.05.09 |
---|---|
[PHP] 파일 제어 (0) | 2023.05.07 |
[PHP] 배열 (0) | 2023.05.05 |
[PHP] PHP 함수 (0) | 2023.05.04 |
[PHP] 조건문 (0) | 2023.05.03 |