Blogger Information
Blog 24
fans 4
comment 0
visits 20207
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
2月10日 学号:478291 命名空间关键技术
Lin__
Original
785 people have browsed it

完全限定名称访问成员、导入成员以及命名空间别名编程

  • 首先定义四个全局成员

  1. <?php
  2. namespace demo;
  3. class Demo{
  4. function show_name(){
  5. echo self::class;
  6. }
  7. }

接口

  1. <?php
  2. namespace demo\api;
  3. interface IDemo{
  4. public static function show_name();
  5. }

函数(定义在全局范围)

  1. <?php
  2. namespace demo\lib;
  3. function demo(){
  4. echo __METHOD__;
  5. }

常量(不受作用域的限制)

  1. <?php
  2. namespace demo\param;
  3. const USER=array('name'=>'Lin','age'=>26);
  • 完全限定名称访问四类全局成员的方式
  1. <?php
  2. require 'class.php';
  3. require 'interface.php';
  4. require 'function.php';
  5. require 'const.php';
  6. //完全限定名称访问类
  7. echo \demo\Demo::class;
  8. echo '<hr />';
  9. //完全限定名称访问接口
  10. class Demo2 implements \demo\api\IDemo{
  11. static function show_name(){
  12. var_dump(class_implements(self::class));
  13. }
  14. }
  15. Demo2::show_name();
  16. echo '<hr />';
  17. //完全限定名称访问函数
  18. echo \demo\lib\demo();
  19. echo '<hr />';
  20. //完全限定名称访问常量
  21. echo \demo\param\USER['name'];

  • 导入四类全局成员的方式以及别名引用方式(导入不能代替require以及include。默认导入的是类和接口,因此在导入函数和常量时,需要在use后增加functionconst
  1. <?php
  2. //导入类
  3. require 'class.php';
  4. use \demo\Demo;
  5. echo Demo::class;
  6. echo '<hr />';
  7. //导入接口
  8. require 'interface.php';
  9. use \demo\api\IDemo;
  10. class Demo2 implements IDemo{
  11. static function show_name(){
  12. var_dump(class_implements(self::class));
  13. }
  14. }
  15. Demo2::show_name();
  16. echo '<hr />';
  17. //导入函数以及别名引用
  18. require 'function.php';
  19. use function \demo\lib\demo as demoFunction;
  20. echo demoFunction();
  21. echo '<hr />';
  22. //导入常量
  23. require 'const.php';
  24. use const \demo\param\USER;
  25. echo USER['name'];

问答

  • 完全限定名称, 限定名称与非限定名称

答:完全限定名称,从全局空间开始查找成员,把成员当做一个文件,可以看做是从根目录开始查找这个文件,类似绝对路径,如:\demo\lib\demo; 限定名称,从当前空间开始查找成员,把成员当做一个文件,可以看做是从当前的目录开始查找文件,类似相对路径,即名称前至少一个\并且位置不位于第一个字符,如:lib\demo;非限定名称,仅在当前空间查找成员,把成员当做一个文件,可以看做是只在当前的目录中查找文件,类似当前路径,如:demo

  • 完成限定名称与限定名称, 非限定名称之间的转换方式

答:使用use可以完成,当写出完整的命名空间路径时,可以转为非限定名称;当写出部分的命名空间路径时,可转为限定名称;限定名称, 非限定名称转为完成限定名称,需补齐完整的命名空间路径

  • use 解决了什么什么?

答:首先是限定名称与限定名称, 非限定名称之间的转换,其次简化在访问成员时命名空间完整路径的编写

  • ::class操作符为什么比NAMESPACE好用? 具体应用场景有哪些?

答:::class操作符返回的是完全限定名称,__NAMESPACE__只返回当前的命名空间。具体的应用场景暂不确定。

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:概念还是不太清楚 , 还要多做些这方面的练习, 希望在实战中进步
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