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

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

小云云
小云云원래의
2018-03-20 09:52:051509검색

PHP에서는 동일한 이름의 함수나 클래스가 허용되지 않습니다. 프로젝트에서 프로그래머가 정의한 클래스 이름이나 함수 이름이 반복적으로 충돌하는 것을 방지하기 위해 PHP5.3에서는 네임스페이스 개념을 도입했습니다.

1. 네임스페이스, 즉 코드를 서로 다른 공간으로 나누는 것입니다. 서로 다른 공간의 클래스 이름은 서로 독립적이며 충돌하지 않습니다.

PHP 파일에는 여러 개의 네임스페이스가 존재할 수 있으며 첫 번째 네임스페이스 앞에는 코드가 있을 수 없습니다. 콘텐츠 공간 선언 뒤의 코드는 이 네임스페이스 에 속합니다(예:

<?php
echo 111;  //由于namespace前有代码而报错
namespace Teacher;
class Person{
  function __construct(){
   echo &#39;Please study!&#39;;
  }
}

2). 다른 공간에서 클래스나 메서드를 호출하는 경우 네임스페이스를 지정해야 합니다.

예:

<?php
namespace Teacher;
class Person{
  function __construct(){
   echo &#39;Please study!<br/>&#39;;
  }
}
function Person(){
  return &#39;You must stay here!&#39;;
};
namespace Student;
class Person{
  function __construct(){
   echo &#39;I want to play!<br/>&#39;;
  }
}
new Person();     //本空间(Student空间)
new \Teacher\Person();   //Teacher空间
new \Student\Person();   //Student空间
echo \Teacher\Person();   //Teacher空间下Person函数

출력:


I want to play!
Please study!
I want to play!
You must stay here!

3. 네임스페이스에 도입된 다른 파일은 이 네임스페이스에 속하지 않고 파일 자체에 정의된 공용 공간이나 네임스페이스에 속합니다.

예: 먼저 1.php 및 2.php 파일을 정의합니다:

<?php  //1.php
class Person{
 function __construct(){
   echo &#39;I am one!<br/>&#39;;
  }
}

<?php
namespace Newer;
require_once &#39;./1.php&#39;;
new Person();  //报错,找不到Person;
new \Person();  //输出 I am tow!;

<?php  //2.php
namespace Two
class Person{
 function __construct(){
   echo &#39;I am tow!<br/>&#39;;
  }
}

<?php
namespace New;
require_once &#39;./2.php&#39;;
new Person();  //报错,(当前空间)找不到Person;
new \Person();  //报错,(公共空间)找不到Person;
new \Two\Person(); //输出 I am tow!;

4. 될 수 있다 향후 참조를 위해 축약됨)

namespace School\Parents;
class Man{
  function __construct(){
   echo &#39;Listen to teachers!<br/>&#39;;
  }
}
namespace School\Teacher;
class Person{
  function __construct(){
   echo &#39;Please study!<br/>&#39;;
  }
}
namespace School\Student;
class Person{
  function __construct(){
   echo &#39;I want to play!<br/>&#39;;
  }
}
new Person();     //输出I want to play!
new \School\Teacher\Person(); //输出Please study!
new Teacher\Person();   //报错
----------
use School\Teacher;
new Teacher\Person();   //输出Please study!
----------
use School\Teacher as Tc;
new Tc\Person();   //输出Please study!
----------
use \School\Teacher\Person;
new Person();   //报错
----------
use \School\Parent\Man;
new Man();   //报错



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

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