본문 바로가기

Language/PHP

include와 namespace

include 또는 require

- 포함하다

- 현재 실행시키려는 php파일이 있다. 그 파일 안에 다른 php 파일을 포함(일종의 모듈처럼)시킬 때 사용하는 방법.


namespace

include와 같은 기능을 사용하게 되면 여러개의 php 파일을 하나의 php 파일 안에서 로드해서 사용하게 되는데, 각각의 php 파일이 만약에 서로 똑같은 이름의 함수, 상수, 클래스 등을 가지고 있다면 충돌이 나게 된다. 이 충돌을 해결하기 위한 방법.


* 코드를 분리하는 이유?


  • 자주 사용되는 코드를 별도의 파일로 만들어서 필요할 때마다 재활용할 수 있다.
  • 코드를 개선하면 이를 사용하고 있는 모든 애플리케이션의 동작이 개선된다.
  • 코드 수정 시에 필요한 로직을 빠르게 찾을 수 있다.
  • 필요한 로직만을 로드해서 메모리의 낭비를 줄일 수 있다.



include


1. 함수의 공유





include(_once)와 require(_once)의 차이점.


거의 없다. 하지만 include를 했을 때 실제로 존재하지 않거나 권한 문제로 읽어 올 수 없는 경우에 include라는 명령은 warning(경고 메세지-주의 의미의 에러)을 띄운다.

같은 현상에서 require는 fatal 에러를 발생시킨다. (fatal error : 치명적인 에러), include보다 강제력이 강하다.


_once라는 접미사가 붙은 것

파일을 로드 할 때 단 한번만 로드하면 된다는 의미다.

php 애플리케이션을 개발했는데, 이미 규모가 큰 상태에서 다른 php애플리케이션을 include하고, 이 다른 php 애플리케이션도 include하는 php 애플리케이션이 있다고 가정했을 때, 중복적으로 php 파일을 include하는 경우가 생길 수 있다. 이럴때 _once를 붙여 사용해주면 좋다.



namespace


이름의 공간, 여기서 말하는 이름(name)은 함수, 상수, 클래스와 같은 것들의 이름이 서로 중복되어 충돌하는 것을 방지하기 위한 수단



네임스페이스 사용방법


ex. 다른이름의 파일에서 동일한 이름의 함수를 사용하고 있을 때, 특정 파일에서 이 두 파일을 require_once 합니다. 이때 그 함수를 호출하면 Fatal error : Cannot redeclare welcome() .... : welcome() 이라는 함수를 중복적으로 선언할 수 없다는 뜻의 에러가 나타난다.





에러 해결방법: 네임스페이스!!!


네임스페이스를 선언하고, 선언한 파일의 경로를 지정해준다. 경로 구분은 '\(역슬래시)'로 한다.

(가상의 경로, 마치 그런 디렉토리에 있는 것처럼)


네임스페이스를 지정한 파일 사용방법

Line 2,3 : require_once 뒤에 파일 가져오는 것은 동일.


그 함수를 사용할 때,


Line 4,5 : echo 파일의 경로\함수명();





다른 ex.


하나의 단일 파일내에서 두개의 네임스페이스를 사용할 때, 네임스페이스 선언 순서에 따라 지정.






* 네임스페이스는 함수 뿐만 아니라, 상수나 클래스명에도 사용할 수 있다.

'Language > PHP' 카테고리의 다른 글

파일제어하기  (0) 2017.12.26
Composer(컴포저)  (0) 2017.12.26
연관배열(Associative array)  (0) 2017.12.22
배열(array)  (0) 2017.12.22
함수(Function)  (0) 2017.12.18