Blogger Information
Blog 30
fans 0
comment 1
visits 21947
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
0210命名空间完全限定名称与别名导入
Admin
Original
715 people have browsed it

命名空间完全限定名称与别名导入

命名空间的使用规范

  • PHP版本5.3+
  • 规范了全局成员的声明与访问方式
  • 规范了全局成员的命名方式与命名冲突的解决方案

    命名空间常用术语

  • 全局成员(4):类,接口,常量,函数;
  • 全局空间:\这个反斜杠就是代表根目录的意思;
  • 完全限定名称:从反斜杠开始一层一层打开,类似于绝对路径;
  • 限定名称: 开头无反斜杠,中间至少有一个反斜杠,从当前目录开始,类似于相对路径;
  • 非限定名称:无反斜杠,直接上类名,在当前目录。

    魔术常量

    • 魔术常量与常量有何不同,魔术常量不允许用户定义,是系统自带的,会随着使用场景不同而改变值
    • __namespace__返回当前命名空间
    • __class__ 返回一个完全限定名称的类名称
    • __METHOD__返回一个完全限定名称类中的方法
    • __FUNCTION__返回函数名称
    • ::class返回具有完全限定名称的类名

      完全限定名称是什么样子的怎么用的

      1. namespace xiaoyu;
      2. //四类全局成员分别是 函数,常量,类,接口
      3. //完全限定调用类
      4. //首先先将我们的脚本导入进去
      5. require 'demo1.php';
      6. $result = \xiaoyu\lib\Demo::test();
      7. //完全限定调用接口
      8. //首先先将我们的脚本导入进去
      9. require 'demo2.php';
      10. class Demo implements xiaoyu{
      11. public static function test(){
      12. return '小雨';
      13. }
      14. }
      15. $result = \xiaoyu\Demo::test();
      16. //完全限定调用常量
      17. //首先先将我们的脚本导入进去
      18. require 'demo3.php';
      19. $result = \xiaoyu\define\MY_SITE;
      20. //完全限定调用函数
      21. //首先先将我们的脚本导入进去
      22. require 'demo4.php';
      23. $result = \xiaoyu\fun\myfun();
      24. //限定名称函数
      25. $result = fun\myfun();
      26. echo '<pre>'.print_r($result,true).'<pre/>';

      导入四类全局成员方式

      1. namespace xiaoyu;
      2. require 'demo1.php';
      3. //导入全局成员类
      4. use xiaoyu\lib\Demo;
      5. $result = Demo::test();
      6. //导入全局成员接口
      7. require 'demo2.php';
      8. use xiaoyu\api\iTest;
      9. class Demo1 implements iTest
      10. {
      11. public static function test()
      12. {
      13. return class_implements(self::class);
      14. }
      15. }
      16. $result = Demo1::test();
      17. //导入全局成员常量
      18. //导入常量和函数的时候需要在use 后面声明一下是 const还是function
      19. require 'demo3.php';
      20. use const xiaoyu\define\MY_SITE;
      21. $result = MY_SITE;
      22. //导入全局成员函数
      23. require 'demo4.php';
      24. use function xiaoyu\fun\myfun;
      25. $result = myfun();
      26. echo '<pre>'.print_r($result,true).'<pre/>';

      导入别名方式

      1. namespace xiaoyu;
      2. //别名引用
      3. require 'demo2.php';
      4. use xiaoyu\api\iTest as Test;
      5. class Demo implements Test
      6. {
      7. public static function test()
      8. {
      9. return class_implements(self::class);
      10. }
      11. }
      12. $result = Demo::test();
      13. echo '<pre>'.print_r($result,true).'<pre/>';

      USE解决啥?

      use导入功能,由它所导入的类,接口,函数,常量,可以在使用时避免书写冗长的完全限定名称,可以直接书写类名等等,use导入命名空间可以解决重复命名,use导入别名,也能解决命名重复的问题

      ::class为什么比namespace好用

      答:前者能返回具有完全限定名称的类名,后者只能返回当前命名空间。
      前者可以方便用于自动加载路径。
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:use 关键字的功能: 1 空间别名, 2 trait 3闭包
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post