博客列表 >面向对象——命名空间、类文件的自动加载类实现

面向对象——命名空间、类文件的自动加载类实现

phpcn_u202398
phpcn_u202398原创
2020年05月06日 14:58:01846浏览

1、命名空间

代码示例
  1. <?php
  2. namespace user\name;
  3. class Name{
  4. public static function name(){
  5. return "我是张三";
  6. }
  7. }
  8. //非限定名称
  9. echo Name::name();
  10. echo "<hr>";
  11. namespace user\sex;
  12. class Name{
  13. public static function name(){
  14. return "我是李四";
  15. }
  16. }
  17. echo "<hr>";
  18. namespace user\age;
  19. class Name{
  20. public static function name(){
  21. return "我是王五";
  22. }
  23. }
  24. //完全限定名称
  25. echo \user\name\Name::name()."<br>";
  26. echo \user\sex\Name::name()."<br>";
  27. echo \user\age\Name::name();
  28. echo "<hr>";
  29. namespace user;
  30. //限定名称
  31. echo sex\aaa::name() ;
  32. namespace user\sex;
  33. class aaa{
  34. public static function name(){
  35. return "我是aaa";
  36. }
  37. }
  38. ?>

2、命名空间别名、类别名

代码示例
  1. <?php
  2. namespace user{
  3. class name{
  4. public static function name(){
  5. return "我是张三";
  6. }
  7. }
  8. class age{
  9. public static function age(){
  10. return "23岁";
  11. }
  12. }
  13. }
  14. namespace Infor{
  15. //命名空间别名
  16. use user as U;
  17. echo U\name::name();
  18. echo "<hr>";
  19. //命名类别名
  20. use user\age as N;
  21. echo N::age();
  22. }
  23. ?>

3、类文件的自动加载类实现

  • spl_autoload_register() 函数可以注册任意数量的自动加载器,当使用尚未被定义的类(class)和接口(interface)时自动去加载
代码示例
  1. <?php
  2. try {
  3. spl_autoload_register(function($className){
  4. $path = str_replace('\\', DIRECTORY_SEPARATOR, $className);
  5. $file = __DIR__ . DIRECTORY_SEPARATOR . $path . '.php';
  6. require $file;
  7. });
  8. } catch (Exception $e) {
  9. die($e->getMessage());
  10. }
  11. use lib\demo;
  12. echo demo::say();
  13. ?>

学习总结

本节课我们学习了命名空间、类文件的自动加载类实现的知识,学到了非限定名称、限定名称、完全限定名称的知识以及使用,学到了自动加载器的知识以及使用,希望通过以后实战进行强化和灵活运用。

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