Blogger Information
Blog 46
fans 0
comment 0
visits 34409
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP实例演示命名空间与类自动加载器
上草一方
Original
671 people have browsed it

1.命名空间实例演示

代码如下:

  1. <?php
  2. /**
  3. * 命名空间:解决全局成员的命名冲突
  4. */
  5. // 一个脚本中,可以创建多个空间
  6. namespace ns1 {
  7. // 空间成员
  8. // 常量
  9. const APP = '商城mall';
  10. }
  11. // 空间分级管理:子空间
  12. namespace ns2\ns3 {
  13. const APP = '问答';
  14. echo APP.'<br>';
  15. }
  16. namespace ns2 {
  17. // 空间成员
  18. // 常量
  19. const APP = '社区';
  20. // 2. 非限定名称:总是从当前空间开始查询
  21. echo APP .'<br>';
  22. echo \ns1\APP .'<br>';
  23. // 在ns2中访问ns1的APP
  24. // 一定要通过全局/根空间开始查询
  25. // 根空间:\
  26. // 1. 完全限定名称:从根空间开始查询
  27. echo \ns1\APP .'<br>';
  28. // 在ns2空间,访问子空间,ns2\ns3中的成员
  29. // 3. 限定名称: ns3\APP
  30. echo '<span style="color=red">' . ns3\APP .'</span><br>';
  31. }
  32. /**
  33. * 命名空间类型
  34. * 1. 完全限定名称: 根空间开始 '\a\b\APP' "绝对路径"
  35. * 2. 非限定名称: 从当前空间开始, 'APP' "当前路径"
  36. * 3. 限定名称: 子空间, 'ns\APP' "相对路径"
  37. */
  38. // 全局空间:匿名的,不要写空间名,用"\"来引用
  39. namespace {
  40. function hello()
  41. {
  42. echo 'hello 大家好';
  43. }
  44. echo '<span style = "color:red">' .ns1\APP. '</span><br>';
  45. echo '<span style = "color:blue">' .ns2\ns3\APP. '</span><br>';
  46. }

效果如下:

2.类自动加载器实例

代码如下:

  1. /**
  2. * 命名空间
  3. * 1. 一个文件中, 只允许声明一个命名空间并只写一个类
  4. * 2. 命名空间的命名,应该与成员的路径一致
  5. * 3. 类名,必须与类文件名对应
  6. */
  7. namespace ns1;
  8. require __DIR__ . '/autoloader.php';
  9. class Demo2
  10. {
  11. }
  12. // new \php\cn\Demo2;
  13. echo Demo2::class . '<br>';
  14. echo \php\cn\Demo2::class;

注册类自动加载器

  1. // 注册一个类的自动加载器
  2. spl_autoload_register(function ($class) {
  3. // echo $class;
  4. // 1. 将命名空间=>映射到一个类文件的绝对路径
  5. $path = str_replace('\\', DIRECTORY_SEPARATOR, $class);
  6. // 2. 生成类文件路径
  7. $file = __DIR__ . DIRECTORY_SEPARATOR . $path . '.php';
  8. // 3. 加载这个类文件
  9. require $file;
  10. });

效果如下:

Correcting teacher:PHPzPHPz

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
Author's latest blog post