PHP - 네임스페이스
PHP 에는 네임스페이스가 존재합니다.
PHP 초창기부터 있던것은 아니지만 5.3버전이후부터 추가된 내용입니다.
PHP 3,4,5초기 시절 사용하다가 Java를 십수년 하는중에는
기존에 하던 패턴만 사용했었죠
게다가 그누보드에서는 사용하지 않는 개념인 namespace
라라벨 을 할때는 그냥 그러려니.. 하는 패턴대로만 사용했습니다.
그런데, 본격적으로 잘 이해를 해보고자 ModernPHP 를 다시 천천히 살펴봤습니다.
용어적으로 혼동이 있을수 있는 내용이지만
java의 package 와 유사한 개념으로 이해하는게 좋을것 같습니다.
똑같지는 않지만 범위를 지정하기에 적적한 그룹핑 개념으로 말입니다.
네임스페이스는 javascript에서도 필요하죠
그리고, 네임스페이스로 영역을 나누고 사용하게되는 것에는 보통 회사명칭이 들어갑니다.
namespace Company\Shop;
와 같이 명시하고
vendor 하위에
company 디렉토리와
company 하위에 shop 디렉토리를 생성합니다.
그리고 그 하위에 Prod 디렉토리를 만들고
Prod.php 파일을만들어
class Prod {
}
내용을 1가지만 작성합니다.
이건 절대적으로 지켜야 하는 규칙은 아니고 권고적으로 지켜야하는 형태인
PSR에 해당되는 내용입니다.
레거시 문법에 익숙한 개발자들에게는 더 생소할부분이고
Java를 사용하던 사람은 익숙하지 않을 내용이지만
위에서 언급한 package 와 비슷하다는것을 알수 있습니다.
사용하는 방식의 use 라는 명령어는
vendor하위의 경로를 불러들입니다.
자바는 컴파일되는 내용이 package형태로 .으로 구분하지만
php는 \로 구분되는 차이가 있고
사용할때 역시
Java 는 import 명령을 사용해서
import company.shop.prod;
와 같이 사용하듯
php에서는
use Company\Shop\Prod;
와 같이 사용하게 됩니다.
php로 namespace 와 use를 이용해서
클래스를 다양하게 생성후 활용
중복된 클래스명을 구분지어 사용하기 위한 방법으로 접근/이해 하는것이
가장 효율적인 방법으로 보여집니다.
JavaScript에서 최근 사용되는
import 개념 역시 동일한 개념으로 이해할수있지 않을까 생각합니다.
#네임스페이스, #namespace, #PHP, #modernPHP, #java, #javascript, #use, #import, #자바와PHP차이