PHP 네임스페이스와 사용법 > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

PHP 네임스페이스와 사용법 정보

PHP PHP 네임스페이스와 사용법

본문

함수나 클래스이름지을때 중복되서 바꿔야하잖아요?

또는 패키지를 만들때가 있죠.

그럴때 네임스페이스를 사용해야됩니다.

 

네임스페이스는 이름대로 이름을 구분짓는 공간을 설정하는것인데요.

 

함수나 클래스의 이름이 같을때 정해진 네임스페이스가 다르면 서로다른것으로 구분됩니다.

자바언어의 패키지, 타입스크립트의 import 와 비슷한개념입니다.

 

객체지향, 기존 절차지향 코드 모두 사용가능합니다.

 

PHP 5.3 부터 사용가능한 네임스페이스에 대해 알아보겠습니다.

 

 

1. 네임스페이스 선언.

 

PHP의 네임스페이스는 꼭 폴더구조와 일치할필요는 없지만

클래스가 포함된 PHP 파일의 네임스페이스를 설정할때는

반드시 마지막에 클래스이름과 일치해야합니다.

 

되도록이면 폴더구조와 일치하는게 나중에 파악하기도 쉽습니다.

 

예시 .  플러그인폴더에 댓글 파일업로드 확장기능을 만든다고 칩시다.

 

uploader.php 파일

 

<?php

namespace Merry\plugin\CommentFileUploader;

 

const TEST_CONST = '상수입니다';

function update_comment_file_db($upload_file_list, $bo_table, $comment_id){}
function update_fileinfo($bo_table, $comment_id, $file_name){}
 
---------------------------------------------------------------------
 

// namespace  키워드 다음에 작성자이름\폴더이름\파일이름 으로 구성됩니다.

구분기호는 \(역슬래시입니다)

 

메리의 plugin 폴더 의 CommentFileUploader 라고 설정했습니다.

 

2.  네임스페이스 사용

일단 불러온 파일을 include 한뒤에 namespace 적어야합니다.

 

위에서 설정한 네임스페이스를 사용하면 해당파일에 있는 함수와 상수, 클래스를 가져올수있습니다.

 

위에 uploader.php에서 만든것을

write_comment_update.skin.php (코맨트 업데이트 스킨파일) 에서 사용하려고 합니다.

 

<?php

use Merry\plugin\CommentFileUploader

사용한다는 뜻의 use 키워드를 씁니다.

 

**

네임스페이스 VS include, include_once , require 차이

 

include 는 해당파일의 모든것을 다가져오는거라 실행부분이있으면

include 하자마자 실행되는 반면 네임스페이스는 함수, 상수, 클래스만 가져오므로

다른데서 활용할수가있습니다. 또한 컴포저 사용시 처음에 관련된 파일을 include 하므로

네임스페이스 사용을 하게됩니다.

 

 

2- 1 네임스페이스 사용 2)

 

 

write_comment_update.skin.php (코맨트 업데이트스킨파일)

 

<?php

use Merry\plugin\CommentFileUploader ;

 

update_comment_file_db 함수를 가져와사용하려고합니다.
 
Merry\plugin\CommentFileUploader\update_comment_file_db($comment_id);
 
이렇게 함수이름앞에 전체경로를 적어야 사용가능한데요
Fully Qualified Name (FQN) 이라고 합니다.
너무길어지니까 줄여서 사용하기를 보겠습니다.

 

2 - 2)  네임스페이스 사용시 별명짓기.

<?php

use Merry\plugin\CommentFileUploader  as uploader;

 

as 뒤에 새로붙일 이름을 적습니다.

 

uploader 라는 이름으로 가져와서 사용합니다.

uploader\update_comment_file_db($comment_id);

 

2 - 3) 상수랑 함수만 따로 가져오기

PHP 5.6 부터 가능.

 

use const 네임스페이스\상수이름

use function 네임스페스\함수이름

 

<?php

use function Merry\plugin\CommentFileUploader\update_comment_file_db;

// 함수이름까지 붙여줍니다.

use const Merry\plugin\CommentFileUploader\test_const

 

 

update_comment_file_db($comment_id);  //앞에 붙는거 없이 사용가능합니다.

TEST_CONST // <- 상수불러와서 바로사용

 

클래스는 use function 이런거 필요없고

use 네임스페이스이름;  하나만 설정하면됩니다.

 

**

\ 하나만 있는경우가 가끔코드 보면있는데요 전역 네임스페이스입니다.

PHP 내장함수, 상수, 클래스랑 유저가 만든거랑 이름이 겹칠 때

PHP기본 내장된것을 사용한다는 뜻입니다.

 

**

namespace 와 use 문법은 코드의 제일 위에 적어야됩니다.

include 처럼 중간에 끼워넣기 안됩니다.

 

- 끝 -

 

플러그인 만들다가 네임스페이스 관련 자료정리겸 올려봅니다

use function 이런건 5.6부터있었는데 지금알았네요 ㄷ

추천
6

댓글 4개

전체 5,154
개발자팁 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIR SOFT