博客列表 >类的重定向,命名空间和内容的访问

类的重定向,命名空间和内容的访问

庄周梦蝶
庄周梦蝶原创
2021年04月18日 22:28:59823浏览
  1. <?php
  2. // 1. 描述类成员重载的原理与实现,并实例演示;
  3. class Demo1
  4. {
  5. //都是守保护的成员,外面不能直接拿
  6. protected $jj = [
  7. 'name' => '小马',
  8. 'age' => 20
  9. ];
  10. // 拿到传进来的值,找一下对应的方法
  11. public function __get($name)
  12. {
  13. $a = 'get' . ucfirst($name);
  14. if (method_exists($this, $a)) {
  15. return $this->$a($name);
  16. } else {
  17. echo '抱歉,当前成员守保护';
  18. }
  19. }
  20. // 动态创建属性
  21. public function __set($name, $value)
  22. {
  23. echo $this->jj[$name];
  24. $this->jj[$name] = $value;
  25. }
  26. //根据传进来的参数动态的调用各自的方法
  27. public function getName($name)
  28. {
  29. echo '我叫' . $this->jj[$name], '<br>';
  30. }
  31. public function getage($name)
  32. {
  33. echo '我今年' . $this->jj[$name] . '岁', '<br>';
  34. }
  35. public function getemail($name)
  36. {
  37. echo '我的邮箱是:' . $this->jj[$name], '<br>';
  38. }
  39. }
  40. $demo1 = new Demo1;
  41. echo $demo1->name;
  42. echo $demo1->age;
  43. $demo1->email = 'admon@qq.com';
  44. echo $demo1->email;
  45. //直接访问受保护成员,返回受保护提示
  46. $demo1->wages = 8999;
  47. echo $demo1->jj['wages'];

  1. <?php
  2. // 2. 全局成员有哪几种,有什么特点,并实例演示;
  3. namespace {
  4. // 三种
  5. // 2-1.常量,不能更改删除重写
  6. const NAME = '小马';
  7. // 2-2.类
  8. class Ns1
  9. {
  10. }
  11. // 2-3.函数
  12. function ns2()
  13. {
  14. }
  15. }
  16. // 3. 实例演示空间的声明与空间成员的访问;
  17. namespace ns1 {
  18. class Na1
  19. {
  20. }
  21. function ns2()
  22. {
  23. }
  24. const NAME = '小马';
  25. //访问当前东西在哪个命名空间中
  26. echo Na1::class,'<br>';
  27. echo ns2::class,'<br>';
  28. echo NAME::class,'<br>';
  29. }

  1. <?php
  2. // 4. 实例演示空间成员的分解与合并操作;
  3. //在同一空间中不宜写过多代码,可以把同一个空间的代码分开文件写,但是空间名是相同的
  4. //访问文件
  5. namespace ns1 {
  6. require '1-1.php';
  7. echo Na1::class, '<br>';
  8. echo ns2::class, '<br>';
  9. echo NAME::class, '<br>';
  10. }
  11. //假如这是另一个文件1-1.php
  12. namespace ns1 {
  13. class Na1
  14. {
  15. }
  16. function ns2()
  17. {
  18. }
  19. const NAME = '小马';
  20. }

  1. <?php
  2. // 5. 实例演示子空间,并在子空间中访问任何空间中的成员的方式;
  3. namespace {
  4. function a(){
  5. echo '我是全局变量','<br>';
  6. }
  7. }
  8. namespace ns1 {
  9. function a(){
  10. echo 1,'<br>';
  11. }
  12. echo a();
  13. echo ns2\a();
  14. echo ns2\ns3\a();
  15. }
  16. namespace ns1\ns2 {
  17. function a(){
  18. echo 2,'<br>';
  19. }
  20. echo \ns1\a();
  21. echo a();
  22. echo ns3\a();
  23. }
  24. namespace ns1\ns2\ns3 {
  25. function a(){
  26. echo 3,'<hr>';
  27. }
  28. echo \ns1\a();
  29. echo \ns1\ns2\a();
  30. echo a();
  31. echo \a();
  32. }

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