일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 카카오프로젝트100
- 자바스크립트 element api
- 자바스크립트 prototype
- 오라클
- 보안뉴스
- 다크웹
- 보안뉴스 한줄요약
- 자바스크립트 API
- 자바스크립트 기본 문법
- 파이썬
- 카카오프로젝트 100
- oracle
- python
- oracle db
- GIT
- 랜섬웨어
- 깃허브
- 카카오프로젝트
- 보안뉴스 요약
- javascript
- 자바스크립트 객체
- Oracle SQL
- numpy
- 보안뉴스한줄요약
- 자바스크립트
- php
- 보안뉴스요약
- ES6
- 자바스크립트 jQuery
- 자바스크립트 node
- Today
- Total
FU11M00N
[ PHP ] php namespace 본문

생활코딩의 이고잉 님의 강의를 기반으로 개인 공부용으로 정리한 포스팅입니다.
- namespace
파일은 데이터를 보관하고 있는 일종의 컨테이너입니다.
컨테이너는 파일명으로 식별됩니다.
파일의 수가 많아지면 파일을 관리하는 것이 점점 어려워지는데 이때 고안된 것이 디렉터리입니다.
디렉터리를 이용하면 같은 이름의 파일이 하나의 컴퓨터에 존재할 수 있습니다.
파일명의 충돌을 회피할 수 있게 된 것입니다.
하지만 모듈이 서로 다른 개발자에 의해서 만들어지기 때문에 같은 이름을 쓰는 경우가 생길 수 있습니다.
이런 경우 먼저 로드된 모듈은 나중에 로드된 모듈에 의해 덮어쓰기 되기 때문에 이에 대한 대책이 필요합니다.
이때 네임스페이스가 필요합니다.
만약 환영인사를 언어별로 다르게 하고 싶다면 어떻게 해야 할까요? 3개의 파일을 만든다
<?php
function welcome(){
return 'Hello';
}
english.php
<?php
function welcome(){
return '안녕';
}
korean.php
<?php
require_once 'greeting_ko.php';
require_once 'greeting_en.php';
echo welcome();
echo welcome();
?>
namespace_test.php
namespace_test.php를 실행시키면 아래와 같은 에러가 발생합니다.

로드한 두 개의 파일 모두 welcome라는 함수를 선언했기 때문이다. PHP에서는 함수의 중복 선언을 허용하지 않는다. 이런 경우 네임스페이스를 사용할 수 있다. 아래와 같이 로드되는 파일의 내용을 수정해보자.
로드한 두개의 파일 모두 "welcome"이라는 같은 이름의 함수를 선언했기 때문입니다.
php에서는 함수의 중복 선언을 허용하지 않기 때문에
이럴 때 네임스페이스를 사용할 수 있습니다.
<?php
namespace language\en;
function welcome(){
return 'Hello world';
}
english_ns.php
<?php
namespace language\ko;
function welcome(){
return '안녕하세요';
}
korean_ns.php
<?php
require_once 'korean_ns.php';
require_once 'english_ns.php';
echo language\ko\welcome();
echo language\en\welcome();
?>
namespace_test2.php

로드되는 파일의 초입에 키워드 "namespace"를 이용하여 네임스페이스를 사용했습니다.
그 후 네임스페이스를 사용할 때는 함수 앞에 네임스페이스의 이름을 붙여서 사용하면 됩니다.
이로서 동일한 이름의 함수인 "welcome" 함수를 하나의 php 파일에서 실행되도록 했습니다.
SUA 정보보안 멘토링에 참여하고 있습니다.
'SUA 정보보안 > php' 카테고리의 다른 글
[ PHP ] 쿠키와세션 , 예제 (0) | 2021.02.14 |
---|---|
[ PHP ] php 파일업로드 (0) | 2021.02.14 |
[ PHP ] php include (0) | 2021.02.13 |
[ PHP ] php 연관배열 (0) | 2021.02.13 |
[ PHP ] php 배열 제어 (0) | 2021.02.13 |