>  기사  >  백엔드 개발  >  PHP 네임스페이스의 역할에 대한 자세한 설명

PHP 네임스페이스의 역할에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-05-22 11:18:154093검색

PHP 네임스페이스의 가장 명확한 기능 중 하나는 중복 이름 문제를 해결하는 것입니다. PHP에서는 두 함수나 클래스가 동일한 이름을 가질 수 없습니다. 그렇지 않으면 치명적인 오류가 발생합니다. 이전 장에서는 PHP 네임스페이스란 무엇인지 를 소개했습니다. PHP 공식 웹사이트에서는 이를 명확하게 정의하고 시각적으로 설명했습니다. 다음은 PHP 공식 웹사이트에서 직접 복사한 단락입니다. 넓은 의미에서 네임스페이스는 사물을 캡슐화하는 방법입니다. 이 추상적인 개념은 여러 곳에서 찾아볼 수 있습니다. 예를 들어 디렉터리는 운영 체제에서 관련 파일을 그룹화하는 데 사용되며 디렉터리에 있는 파일의 네임스페이스 역할을 합니다. 예를 들어, foo.txt 파일은 /home/greg 및 /home/other 디렉토리에 동시에 존재할 수 있지만 두 개의 foo.txt 파일이 동일한 디렉토리에 존재할 수는 없습니다. 또한 /home/greg 디렉토리 외부에서 foo.txt 파일에 액세스할 때 /home/greg/foo.txt를 가져오려면 파일 이름 앞에 디렉토리 이름과 디렉토리 구분 기호를 넣어야 합니다. 이 원칙을 프로그래밍 분야에 적용한 것이 네임스페이스의 개념입니다.

PHP 네임스페이스에 네임스페이스 키워드를 도입한 것은 PHP 객체지향 프로그래밍 과정에서 발생하는 다양한 "문제"를 해결하기 위한 것으로, 구체적인 문제는 다음과 같습니다. >

  1. 사용자가 작성한 코드와 PHP 내부 클래스/함수/상수 또는 타사 클래스/함수/상수 간에 이름이 충돌합니다.

  2. 문제 1을 완화하기 위해 일반적으로 다양한 클래스를 작성할 때 긴 클래스 이름을 사용하거나 다른 기능을 구현하는 클래스에 이름 접두사(또는 접미사)를 추가합니다.

  3. 매직 함수 __autoload를 사용하지 않고 각 클래스가 단독으로 php 파일을 점유하는 경우, 서로 다른 클래스를 호출하기 위해 이 클래스를 사용하는 다른 php 파일을 더 많이 사용하게 됩니다. (또는 require 또는 require_once) 문을 시작 부분에 추가합니다.

먼저 네임스페이스를 만듭니다. 동일한 스크립트 파일에 여러 네임스페이스를 만들 수 있습니다.

코드는 다음과 같습니다.

<?php
//创建一个名为&#39;Article&#39;的命名空间
namespace Article;
//此Comment属于Article空间的元素
class Comment { }
//创建一个名为&#39;MessageBoard&#39;的命名空间
namespace MessageBoard;
//此Comment属于MessageBoard空间的元素
class Comment { }
?>

다른 공간 사이에서는 다른 요소를 직접 호출할 수 없으며 네임스페이스 구문을 사용해야 합니다.

샘플 코드는 다음과 같습니다.

<?php
namespace Article;
class Comment { }
namespace MessageBoard;
class Comment { }
//调用当前空间(MessageBoard)的Comment类
$comment = new Comment();
//调用Article空间的Comment类
$article_comment = new \Article\Comment();
?>

보시다시피 MessageBoard 공간의 기사 공간에 있는 Comment 클래스를 호출할 때 파일 경로와 같은 구문이 사용됩니다.

스페이스 이름 요소 이름

클래스를 제외하고 함수 및 상수의 사용법은 동일합니다. 아래에서는 두 공간에 대한 새 요소를 생성하고 해당 값을 메시지보드 공간에 출력합니다.

코드는 다음과 같습니다.

<?php
namespace Article;
const PATH = &#39;/article&#39;;
function getCommentTotal() {
 return 100;
}
class Comment { }
namespace MessageBoard;
const PATH = &#39;/message_board&#39;;
function getCommentTotal() {
 return 300;
}
class Comment { }
//调用当前空间的常量、函数和类
echo PATH; //message_board
echo getCommentTotal(); //300
$comment = new Comment();
//调用Article空间的常量、函数和类
echo \Article\PATH; //article
echo \Article\getCommentTotal(); //100
$article_comment = new \Article\Comment();
?>

다음 결과를 얻습니다.

/message_board300/article100


[관련 튜토리얼 추천]

1. "

php.cn Dugu Jiujian (4)-php 비디오 튜토리얼"

2. 네이밍 스페이스: 같은 이름, 같은 성별을 갖고 있지만 서로 다른 시공간에 속해 있습니다


초보부터 마스터까지 PHP 프로그래밍에 대한 전체 튜토리얼 세트

위 내용은 PHP 네임스페이스의 역할에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.