博主信息
博文 24
粉丝 4
评论 0
访问量 26276
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
2月10日 学号:478291 命名空间关键技术
Lin__
原创
1048人浏览过

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

  • 首先定义四个全局成员

  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__只返回当前的命名空间。具体的应用场景暂不确定。

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:概念还是不太清楚 , 还要多做些这方面的练习, 希望在实战中进步
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学