Blogger Information
Blog 145
fans 7
comment 7
visits 164550
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP基础知识:命名空间和自动加载器
李东亚¹⁸⁰³⁹⁵⁴⁰¹²⁰
Original
675 people have browsed it

代码练习

1、自动加载代码

  1. <?php
  2. try{
  3. spl_autoload_register(function($file){
  4. // echo $file;
  5. $path=str_replace('\\',DIRECTORY_SEPARATOR,$file);
  6. $path=__DIR__.DIRECTORY_SEPARATOR.$path.'.php';
  7. // echo $path;
  8. require $path;
  9. });
  10. }catch(Exception $e){
  11. echo $e->getMessage();
  12. }

2、demo代码

  1. <?php
  2. namespace
  3. {
  4. require 'autoload.php';
  5. use lib\pub\Ab;
  6. use lib\pub\Bc;
  7. use lib\pub\Df as D;//别名的使用;
  8. echo '自动加载类:','<br>';
  9. echo Ab::get(),'<br>';
  10. echo Bc::get(),'<br>';
  11. echo '别名的使用:',D::get(),'<hr>';
  12. class A{
  13. public static function get(){
  14. return __METHOD__;
  15. }
  16. }
  17. echo '非限定空间名称(<code>A::get()</code>):'.A::get(),'<br>';
  18. }
  19. namespace A
  20. {
  21. class A{
  22. public static function get(){
  23. return __METHOD__;
  24. }
  25. }
  26. echo '限定空间名称(<code>B\A::get()</code>)'.B\A::get(),'<br>';
  27. }
  28. namespace A\B
  29. {
  30. class A{
  31. public static function get(){
  32. return __METHOD__;
  33. }
  34. }
  35. }
  36. namespace C
  37. {
  38. echo '完全限定空间名称:'.'<br>';
  39. echo '全局中的类(<code>\A::get()</code>):'.\A::get().'<br>';
  40. echo 'A空间的类(<code>\A\A::get()</code>):'.\A\A::get().'<br>';
  41. echo 'B空间的类(<code>\A\B\A::get()</code>):'.\A\B\A::get().'<br>';
  42. }

3、代码运行结果

" class="reference-link">

总结

1、命名空间关键字:namespace;命名空间一般写在文档首行;
2、命名空间两种形式:namespace name;namespace name{};
第二中国形式可以命名匿名空间(也叫全局空间)
3、全局成员:类、函数、常量、接口
4、命名空间访问形式:非限定名称(A::get()),限定名称(B\A:get())和完全限定名称(\A\A\B:get()
5、非限定名称和限定名称会自动补充完成为完全限定名称;
6、 use 用来声明空间别名,use 默认就是从根空开始;例如:use lib\pub\Df as D;类别名与原始类名相同, 此时可以省略类别名;
7、自动加载知识点:spl_autoload_register();str_replace($seacher,$replace,$str);DIR魔术常量:获取文夹所在目录,DIRECTORY_SEPARATOR:自适应系统的目录分隔符;
8、require '';:加载脚本;

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