Blogger Information
Blog 25
fans 1
comment 1
visits 17363
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
0210作业+全局成员的访问方式,导入,别名+10期线上班
江川林
Original
721 people have browsed it

编程题

-1,首先认识什么是全局成员
类,接口,函数,常量
-2,常用的几个魔术常量
__NAMESPACE__,返回当前命名空间(string)
__CLASS__,返回一个以完全限定名称的类名称
__METOD__,返回一个以完全限定名称的方法名称
__FUNCTION__,范围一个以完全限定名称的函数名称
-3,用完全限定名称访问全局成员
以下代码是以完全限定名称访问4大类全局成员

  1. <?php
  2. //创建命名空间,必须在脚本的第一行
  3. namespace chapterA;
  4. //不同脚本的相同命名空间
  5. //类
  6. use chapterA\sub\NAME;
  7. require 'demo2.php';
  8. //$result = namespace\demo2::name();
  9. //非限定名称的类访问,类名前没有'\'
  10. $result = demo2::name();
  11. //创建全局成员,用完全限度名称访问类、接口、函数、常量(全局成员)
  12. //类
  13. require 'demo3.php';
  14. $result = \chapterB\sub\demo3::name();
  15. // 限定名称访问全局成员
  16. //接口
  17. require 'demo4.php';
  18. class sex implements sub\NAME {
  19. public static function name() : array
  20. {
  21. return [
  22. 'namespace'=>__NAMESPACE__,
  23. 'class'=>__CLASS__,
  24. 'method'=>__METHOD__,
  25. ];
  26. }
  27. }
  28. $result = sex::name();
  29. //函数
  30. require 'dem5.php';
  31. //完全限定名称访问
  32. $result = \chapterA\con\study();
  33. //限定名称访问
  34. $result = con\study();
  35. //常量
  36. require 'demo6.php';
  37. //完全限定名称
  38. $result = \chapterA\cons\NAME;
  39. echo '<pre>' . print_r($result, true) . '</pre>';

-4,导入4大类全局成员的方式
use+\完全限定名称)
以下代码是导入

  1. <?php
  2. namespace chapterA;
  3. // 导入和别名
  4. //导入:声明当前脚本中要用到的,使用完全限定成员表示的全局成员
  5. //导入的作用:全局成员导入后,就不在书写冗长的完全限定名称了
  6. //语法:(use \完全限定名称的全局成员)因为默认全局开始,所以可以省略开头的\
  7. //导入完全限定名称的类
  8. require 'demo2.php';
  9. use \chapterA\demo2;
  10. $result = demo2::name();
  11. //导入完全限定名称的接口
  12. require 'demo4.php';
  13. use \chapterA\sub\NAME;
  14. class sex implements NAME {
  15. public static function name() : array
  16. {
  17. return [
  18. 'namespace'=>__NAMESPACE__,
  19. 'class'=>__CLASS__,
  20. 'method'=>__METHOD__,
  21. ];
  22. }
  23. }
  24. $result = sex::name();
  25. //导入完全限定名称的函数
  26. require 'dem5.php';
  27. use function \chapterA\con\study;
  28. $result = study();
  29. //导入完全限定名称的常量
  30. //require 'demo6.php';
  31. //use const \chapterA\cons\NAME;
  32. //$result = NAME;
  33. //echo '<pre>' . print_r($result, true) . '</pre>';
  34. //使用use将完全限定名称转换为限定名称
  35. require 'demo6.php';
  36. use const \chapterA\cons;
  37. $result = cons\NAME;
  38. echo '<pre>' . print_r($result, true) . '</pre>';

-5,别名的应用方式
别名是解决了在使用简化后的完全限定名称时,导致的命名冲突的问题

  1. <?php
  2. namespace chapterA;
  3. //创建一个名为dome的类
  4. class demo {
  5. // ...
  6. }
  7. require 'demo9.php';
  8. //导入一个不同脚本相同命名空间,且存在一个名为demo的类
  9. //use \chapterA\demo;
  10. //以上会提示错误:demo已存在
  11. //解决方法:别名
  12. use chapterA\sub\demo as demoA;
  13. $result = demoA::class;
  14. echo '<pre>' . print_r($result,true) . '</pre>';

问答题

-1,完全限定名称:以\开头的,根目录
-2,限定名称:不以\开头,且至少有一个反斜线
-3,非限定名称:当前命名命名空间下的名称
-4,完全限定名称,限定名称,非限定名称的转换,需要use导入

  1. //使用use将完全限定名称转换为限定名称
  2. require 'demo6.php';
  3. use const \chapterA\cons;
  4. $result = cons\NAME;
  5. //使用use将完全限定名称转换为非限定名称
  6. require 'demo6.php';
  7. use const \chapterA\cons\NAME;
  8. $result = NAME;
  9. echo '<pre>' . print_r($result, true) . '</pre>';

-5,use解决了什么?
①当多次使用完全限定名称的时候,冗长的名称代码
②当使用简化后的完全限定名称,可能导致的命名冲突问题(别名)
-6,::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