Blogger Information
Blog 32
fans 2
comment 2
visits 23329
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
全局成员访问方式与命名空间别名机制(0210)
暴风战斧
Original
727 people have browsed it

编程思路

一开始这些概念没理解,看了两遍才理解,理解后再模仿实践代码

作业总结

感觉现在进入了理解难点知识阶段了,一次看不懂就多看两遍,代码还是要写,自己亲手写出来真正印在脑子里!

1.全局成员四类访问方式

  • 演示代码
  1. <?php
  2. //创建命名空间
  3. namespace chapter01;
  4. //1.完全限定名称访问类
  5. require 'demo01.php';
  6. $result = \chapter01\lib\Demo::index();
  7. // 格式化打印结果
  8. echo '<pre>' . print_r($result, true) . '</pre>';
  9. echo '<hr>';
  10. //2.完全限定名称访问接口
  11. require 'demo04.php';
  12. class Test01 implements \chapter01\api\iTest
  13. {
  14. public static function hello()
  15. {
  16. return class_implements(self::class);
  17. }
  18. }
  19. $result = Test01::hello();
  20. //2.完全限定名称访问接口
  21. require 'demo04.php';
  22. class Test01 implements \chapter01\api\iTest
  23. {
  24. public static function hello()
  25. {
  26. return class_implements(self::class);
  27. }
  28. }
  29. $result = Test01::hello();
  30. //2.完全限定名称访问接口
  31. require 'demo04.php';
  32. class Test01 implements \chapter01\api\iTest
  33. {
  34. public static function hello()
  35. {
  36. return class_implements(self::class);
  37. }
  38. }
  39. $result = Test01::hello();
  40. // 格式化打印结果
  41. echo '<pre>' . print_r($result, true) . '</pre>';
  42. echo '<hr>';
  43. //3.完全限定名称访问函数
  44. require 'demo02.php';
  45. $result = \chapter01\common\getFuncName();
  46. // 格式化打印结果
  47. echo '<pre>' . print_r($result, true) . '</pre>';
  48. echo '<hr>';
  49. //4.完全限定名称访问常量
  50. require 'demo03.php';
  51. $result = \chapter01\constant\SITE_NAME;
  52. // 格式化打印结果
  53. echo '<pre>' . print_r($result, true) . '</pre>';
  54. echo '<hr>';
  55. //访问全局空间中的常量
  56. $result = \PHONE['name'] . ':' . \PHONE['price'];
  57. // 格式化打印结果
  58. echo '<pre>' . print_r($result, true) . '</pre>';
  • 效果图

2.导入四类成员的方式

  • 演示代码
  1. <?php
  2. //创建命名空间
  3. namespace chapter01;
  4. //1.导入完全限定名称的类
  5. use chapter01\lib\Demo;
  6. require 'demo01.php';
  7. $result = Demo::index();
  8. // 格式化打印结果
  9. echo '<pre>' . print_r($result, true) . '</pre>';
  10. echo '<hr>';
  11. //2.导入完全限定名称的接口
  12. use chapter01\api\iTest;
  13. require 'demo04.php';
  14. class Test01 implements iTest
  15. {
  16. public static function hello()
  17. {
  18. return class_implements(self::class);
  19. }
  20. }
  21. $result = Test01::hello();
  22. // 格式化打印结果
  23. echo '<pre>' . print_r($result, true) . '</pre>';
  24. echo '<hr>';
  25. //3.导入完全限定名称的函数
  26. require 'demo02.php';
  27. use function chapter01\common\getFuncName;
  28. $result = getFuncName();
  29. // 格式化打印结果
  30. echo '<pre>' . print_r($result, true) . '</pre>';
  31. echo '<hr>';
  32. //4.导入完全限定名称的常量
  33. require 'demo03.php';
  34. use const chapter01\constant\SITE_NAME;
  35. $result = SITE_NAME;
  36. // 格式化打印结果
  37. echo '<pre>' . print_r($result, true) . '</pre>';
  • 效果图

3.全局中别名引用方式

  • 演示代码
  1. <?php
  2. //创建命名空间
  3. namespace chapter01;
  4. //别名引用方式
  5. class User
  6. {
  7. //..
  8. }
  9. //为避免重名,将导入的类定义别名
  10. require 'demo05.php';
  11. use chapter01\admin\User as Users;
  12. $result = Users::class;
  13. // 格式化打印结果
  14. echo '<pre>' . print_r($result, true) . '</pre>';
  15. echo '<hr>';
  16. // 别名与当前完全限定名称的成员名称相同的时候, 可以省略
  17. require 'demo06.php';
  18. use chapter01\index\Index;
  19. $result = Index::class;
  20. // 格式化打印结果
  21. echo '<pre>' . print_r($result, true) . '</pre>';
  • 效果图

4.问答题解答

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

    完全限定名称:从全局空间开始查找成员,类似绝对路径;
    限定名称:从当前空间开始查找成员,类似相对路径;
    非限定名称:仅在当前空间中查找成员,类似当前路径!

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

    完全限定名称:具有完整命名空间名称
    非限定名称: 类名称前不允许有\
    限定名称:类名称前面至少有一个\, 而且这个\不是第一个字符

  • use 解决了什么?

    使用use语法将全局成员导入后, 在当前脚本中就不必再书写冗长的完全限定名称。

  • ::class操作符为什么比NAMESPACE好用? 具体应用场景有哪些?
  • __NAMESPACE__: 魔术常量, 返回当前命名空间,经常采用拼接方式使用, ::class: 返回具有完全限定的类名;::class用于快速生成完全限定名称的类名!
  1. $result = call_user_func([__NAMESPACE__ . '\lib\Demo', 'index']);
  2. $result = Index::class;
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