博客列表 >php学习:第15章 细说命名空间

php学习:第15章 细说命名空间

王小飞
王小飞原创
2020年05月06日 17:29:57575浏览

1.限定名称,非限定名称,完全限定名称

  1. namespace ns\a1;
  2. echo __NAMESPACE__ . '<br>';
  3. class lei{
  4. public static $name = '空间ns\a1 - 类lei';
  5. }
  6. //这里是非限定名称 没有任何路径
  7. echo lei::$name;
  8. namespace ns;
  9. echo __NAMESPACE__ . '<br>';
  10. echo \ns\a2\lei::$name . '<br>';
  11. // 限定名称 本空间和另一个空间名称开头一致
  12. echo a2\lei::$name;
  13. class lei{
  14. public static $name = '空间nsa2 - 类lei';
  15. }
  16. namespace ns\a2;
  17. echo __NAMESPACE__ . '<br>';
  18. class lei{
  19. public static $name = '空间ns\a3 - 类lei';
  20. }
  21. // 完全限定名称 从根目录开始 开头带/
  22. echo \ns\a1\lei::$name;

总结:
非限定名称 没有任何路径
限定名称 本空间和另一个空间名称开头一致
完全限定名称 从根目录开始 开头带/

2.命名空间的别名, 与类别名

  1. namespace ns1;
  2. class lei
  3. {
  4. public static $name = '空间ns1 - 类lei';
  5. }
  6. namespace ns2;
  7. class lei1
  8. {
  9. public static function index()
  10. {
  11. return '这里是个方法1可以写html 可以加载一个文件';
  12. }
  13. }
  14. class lei2
  15. {
  16. public static function cate()
  17. {
  18. return '这里是个方法2可以写html 可以加载一个文件';
  19. }
  20. }
  21. namespace ns3;
  22. //将空间ns1变名为 n
  23. use ns1 as n;
  24. echo n\lei::$name . '<hr>';
  25. //将ns1\lei类的名称更改 类名称可以省略别名
  26. use ns1\lei;
  27. echo lei::$name;

3. 类文件的自动加载器

  1. //先把自动加载器文件加载过来
  2. require 'autoload.php';
  3. //自动加载器里面的代码
  4. try {
  5. // 注册一个自动加载器 参数是回调函数 函数就是类名
  6. spl_autoload_register(function($className){
  7. //1. 应该将类名中的命名空间的分隔符转为目录分隔符
  8. $path = str_replace('\\', DIRECTORY_SEPARATOR, $className);
  9. // 2. 生成真正要加载的类文件名称
  10. $file = __DIR__ . DIRECTORY_SEPARATOR . $path . '.php';
  11. // 3. 加载这个文件
  12. require $file;
  13. return $file;
  14. });
  15. } catch (Exception $e) {
  16. die($e->getMessage());
  17. }
  18. //自动加载器里面的代码结束
  19. //这里很重要 你不use给他别名 在echo他的路径就不会显示
  20. use inc\lib\Demo1;
  21. //打印
  22. echo Demo1::say();

总结:抽空多复习,多看手册,写案例代码

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议