>  기사  >  백엔드 개발  >  무한 중첩 인형, 네임스페이스의 네이밍 경로

무한 중첩 인형, 네임스페이스의 네이밍 경로

autoload
autoload원래의
2021-02-26 17:32:013020검색

네임스페이스를 학습한 후 네임스페이스에 대한 간략한 요약은 다음과 같습니다. namespace,顺手来个命名空间的小总结。

1.命名空间的使用目的

   PHP函数常量是不允许同名的。为了解决这三者的同名问题,所以出现了命名空间,故而命名空间只影响类、函数、常量(const)。

2.命名空间的使用格式

      a.可以命名一个空间

 <?php
namespace space1;//namespace关键字+空间名 
代码;
 ?>

      b.也可以同时命名多个空间

<?php
namespace space1;//namespace关键字 +空间名 
代码1;
namespace space2;
代码2;
namespace space3;
代码3;
.......//代码1,代码2,代码3,可相同亦可不同
.......
 ?>

   注意事项:如果一个php文件中,第一个空间的定义义必须放在第1行。不过凡事都有例外,在声明命名空间之前还有唯一合法的代码是用于定义源文件编码方式的 declare 语句。所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前。例如下面的代码会报错。

<html>
<?php
namespace space1;
namespace space2;
?>
</html>

3.命名空间的访问

  命名空间的访问分为:非限定空间访问限定空间访问完全限定空间访问

       a.非限定空间访问

<?php
namespace space3;
   function f1(){
   echo "space3";
   }
namespace space3\space2;//其中"\"代表space2是space3的子空间,同理space3是space2的父空间。
   function f1(){
     echo "space2";
     }
namespace space3\space2\space1;
   function f1(){
     echo "space1";
     }
   f1();//对上面空间成员进行访问,输出结果为:space1
?>

      b.限定空间访问

<?php
namespace space2\space1;
    function f1(){
     echo "space1";
      }
namespace space2;
function f1(){
     echo "space2";
      }
   f1();//此时输出的是 space2
   space1\f1();//此时输出的是space1
?>

      c.完全限定空间访问

<?php
namespace space3;
   function f1(){
   echo "space3";
   }
namespace space2;
      function f1(){
     echo "space2";
     }
namespace space1;
     function f1(){
     echo "space1";
     }
   f1();//对上面空间成员进行访问,输出结果为:space1
   \space3\f1();//对space3进行访问,输出结果为:space3
   \space2\f1();//对space2进行访问,输出结果为:space2
?>

4.引入空间成员

      a.use 空间名空间名 【as 别名】:将指定空间引入到当前空间。同可以使用as关键字为被引入的空间起个别名

      b.use 空间名空间名成员类 【as

1. 네임스페이스를 사용하는 목적

PHP, function, class, constant code>는 동일한 이름을 허용하지 않습니다. 이 세 가지 중 같은 이름의 문제를 해결하기 위해 네임스페이스가 등장했기 때문에 네임스페이스는 <code>클래스, 함수, 상수(const)에만 영향을 미칩니다.

    2. 네임스페이스의 사용 형식
  • a. 하나의 공백에 이름을 지정할 수 있습니다.

    <?php
    namespace space3;
       function f1(){
       echo "space3";
       }
    //当前所有访问如果使用非限定名称都代表访问当前空间内的元素
    f1();//访问space3下f1()函数
    //想要访问函数
    define(&#39;PI&#39;,3.14);//space3下没有define()函数,全局函数有
    //想要访问系统常量
    echo PHP_VERSION; //space3下没有define()函数,全局函数有
    
    
    //想要访问类
    
    //错误方案
    //$m=new Mysqli(&#39;localhost&#39;,&#39;root&#39;,&#39;root&#39;);//系统会提示类不存在
    
    //正确方案
    $m= new \Mysqli(&#39;localhost&#39;,&#39;root&#39;,&#39;root&#39;);
    
    ?>

  • b 동시에 여러 공백에 이름을 지정할 수도 있습니다.
  • rrreee 참고: , 첫 번째 각 공간의 정의는 라인 1에 배치되어야 합니다. 그러나 모든 것에는 예외가 있으며 네임스페이스를 선언하기 전에 유효한 유일한 코드는 소스 파일의 인코딩을 정의하는 declare 문입니다. 공백을 포함하여 PHP가 아닌 코드는 네임스페이스 선언 앞에 나타날 수 없습니다. 예를 들어 다음 코드는 오류를 보고합니다. rrreee

    3. 네임스페이스 액세스

네임스페이스 액세스는 부적격 공간 액세스, 적격 공간 액세스, 정규화된 공간 액세스로 나뉩니다. 코드>.

a. 공간 접근 제한

rrreee b. 공간 접근 제한

rrreee 공간 접근 제한rrreee4.

a. 사용 공간 이름 공간 이름 [별명으로 ]: 지정된 공간을 현재 공간에 도입합니다. as 키워드를 사용하여 도입된 공간 🎜🎜🎜 🎜b에 별칭을 지정할 수도 있습니다.사용 공간 이름 공간 이름 멤버 클래스 [as 별칭]: 지정된 항목을 변경합니다. space의 멤버는 현재 스페이스에 소개되며, 스페이스 멤버는 클래스에만 소개될 수 있습니다. 🎜🎜🎜5. 일부 사소한 상황 🎜🎜🎜🎜🎜 🎜네임스페이스가 나타나면 스페이스 요소(클래스, 상수, 함수)에 대한 액세스가 허용됩니다. 제한된 공간 내에서 비한정 공간 접근을 사용하는 경우 시스템은 다음과 같은 구문 분석 로직을 갖습니다. (경로에 따라 수식된 이름 또는 정규화된 이름이 직접 검색됩니다.) 🎜🎜🎜🎜🎜🎜자신의 공간에서 먼저 검색🎜🎜 🎜🎜🎜🎜🎜🎜 둘째, 요소를 찾을 수 없으면 다른 공간 요소가 다르게 처리됩니다.🎜🎜🎜🎜🎜🎜🎜🎜 시스템 상수와 시스템 기능을 찾을 수 없으면 전역 공간에서 찾을 수 있습니다🎜🎜🎜🎜 🎜🎜 시스템 클래스는 자동으로 전역 공간으로 이동하여 찾지 않습니다(오류 보고, 공간을 찾을 수 없다는 메시지 표시) 🎜🎜🎜rrreee🎜🎜 🎜 권장: 🎜php tutorial🎜🎜🎜🎜🎜

위 내용은 무한 중첩 인형, 네임스페이스의 네이밍 경로의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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