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. }

更多相关文章

  1. 【等待事件】日志类 等待事件(4.4)--log buffer space(日志缓冲空间
  2. 用户表空间配额(User tablespace Quota)
  3. 如何正确的删除表空间数据文件
  4. 当面试官问我ArrayList和LinkedList哪个更占空间时,我这么答让他
  5. 【DB笔试面试682】在Oracle中,Undo段中区3种状态分别是什么(Undo表
  6. 【linux】实战扩展swap分区
  7. MySQL InnoDB 共享表空间和独立表空间
  8. SYSAUX表空间占用过大情况下的处理(AWR信息过多)
  9. 数据文件、表空间offline用法及区别

随机推荐

  1. android 笔记-scrollview滑动阴影取消
  2. Android摄像头相关问题记录
  3. android自动获取短信验证码
  4. 旋转对话框
  5. 【Android】Android中AlertDialog对话框
  6. Android7.0中文文档(API) -- EdgeEffect
  7. Android(六): What Android Is
  8. 清除app数据等同于设置中的清除数据
  9. Android 弹球游戏
  10. 单选按钮(RadioButton)和复选框(CheckBox)的