博主信息
博文 29
粉丝 0
评论 0
访问量 36190
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP基础:命名空间基础知识及类文件的自动加载
暴宇
原创
950人浏览过

PHP基础:命名空间基础知识及类文件的自动加载

1.命名空间基础知识

1.1声明命名空间的语法

用关键字namespace来声明命名空间
namespace 空间名称;

1.2命名空间的使用:

非限定名称:成员前面不添加任何的空间名称,包括\,相当于当前路径

限定名称:成员前面至少要有1个命名空间和1个反斜线\, 且反斜线\不能在首位, 相当于相对路径

完全限定名称:第一个字符一定是反斜线(反斜线代表根空间), 然后再跟上命名空间,相当于绝对路径

1.3命名空间的应用场景:

非限定名称:可应用于访问当前命名空间里的成员

限定名称:可应用于访问下级命名空间里的成员

完全限定名称:可应用于所有场景,不管当前处在哪个空间下,利用完全限定名称都可访问到指定成员

1.4 代码示例

  1. // 命名空间
  2. namespace D盘;
  3. // 相当于磁盘目录
  4. class file{
  5. const FILENAME= __CLASS__;
  6. }
  7. // 非限定名称:成员前面不添加任何的空间名称,包括\,相当于当前路径
  8. echo file::FILENAME,'<hr>';
  9. namespace D\一级目录;
  10. // 相当于1级目录
  11. class file{
  12. const FILENAME= __CLASS__;
  13. }
  14. // 限定名称:成员前面至少要有1个命名空间和1个反斜线\, 且反斜线\不能在首位, 相当于相对路径
  15. echo 二级目录\file::FILENAME,'<hr>';
  16. namespace D\一级目录\二级目录;
  17. // 相当于2级目录
  18. class file{
  19. const FILENAME= __CLASS__;
  20. }
  21. // 完全限定名称:第一个字符一定是反斜线(反斜线代表根空间), 然后再跟上命名空间,相当于绝对路径
  22. echo \D\一级目录\file::FILENAME,'<hr>';

1.5 运行效果图

1.6 命名空间及类的别名

用关键字use给命名空间起别名,也可给命名空间中的类起别名

  1. namespace newdir;
  2. // 给命名空间起别名
  3. // 语法:use 命名空间名称 as 别名
  4. use D as d;
  5. echo d\file::FILENAME,'<hr>';
  6. // 给命名空间+类起别名
  7. // 语法:use 命名空间名称+类名称 as 别名
  8. use D\一级目录\file as onefile;
  9. echo onefile::FILENAME,'<hr>';
  10. // 如果别名与类名相同,可省略as关键字及别名
  11. // 语法:use 命名空间名称+类名称
  12. use D\一级目录\二级目录\file;
  13. echo file::FILENAME,'<hr>';

命名空间和类别名 主要应用于简化命名空间较多且路径较长的类名称,可将命名空间和文件所在路径一一对应,类名和文件名一一对应,实现自动加载类文件

2.类文件的自动加载

2.1实现原理:

(1)将带命名空间的类名称中的反斜线替换为系统目录分割符

(2)拼接出要加载的类文件绝对路径

(3)用require加载这个类文件

(4)用use简化类名称,使用简化后的类名称访问类方法

2.2代码示例

  1. // 获取到带命名空间的类名称
  2. $className = 'inc\lib\functionclass';
  3. //1.将带命名空间的类名称中的反斜线替换为系统目录分割符
  4. $path = str_replace('\\', DIRECTORY_SEPARATOR, $className);
  5. // 2.拼接出要加载的类文件绝对路径
  6. $file = __DIR__ . DIRECTORY_SEPARATOR . $path . '.php';
  7. // 3.用require加载这个类文件
  8. require $file;
  9. // 4.用use简化类名称,使用简化后的类名称访问类方法
  10. use inc\lib\functionclass;
  11. echo functionclass::myfunction();

2.3运行效果

3.总结

3.1 利用命名空间可将同类代码放在一起管理,就像管理文件一样,既直观又方便

3.2 利用命名空间与文件路径的映射,类名称与文件名的映射可实现自动加载类文件

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

批改状态:合格

老师批语:命名空间在后面的框架中很有用
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学