博客列表 >1203作业面向对象编程-PHP培训第九期线上班

1203作业面向对象编程-PHP培训第九期线上班

淡月
淡月原创
2019年12月04日 17:42:54599浏览

1.基本流程

  1. <?php
  2. //OOP基本步骤
  3. //1.创建类
  4. class Demo1
  5. {
  6. //2.添加类成员
  7. public $site = 'php中文网';
  8. public function getSite()
  9. {
  10. $obj = new Demo1;
  11. }
  12. }
  13. //3.访问类成员
  14. $obj = new Demo1;
  15. echo $obj->site . '<br>';
  16. echo $obj->getSite();

2.类与实例的引用

  1. <?php
  2. // 1. 创建类
  3. class Demo2
  4. {
  5. // 2. 添加类成员
  6. public $site = 'php中文网';
  7. public $role = '讲师';
  8. public function getSite()
  9. {
  10. return $this->site . ' 欢迎您~~';
  11. }
  12. public function getRole()
  13. {
  14. return $this->role;
  15. }
  16. }
  17. // 3. 访问类成员
  18. $obj = new Demo2();
  19. echo $obj->site . '<br>';
  20. echo $obj->getRole() . '<br>';

3.构造方法

  1. <?php
  2. // 构造函数内部干了什么事?
  3. // 1. 创建类
  4. class Demo3
  5. {
  6. // 2. 添加类成员
  7. public $site;
  8. public $role;
  9. public function getInfo()
  10. {
  11. return '我是: ' . $this->site . $this->role;
  12. }
  13. // 构造方法: 1. 类实例的初始化; 2.自动完成在类实例创建过程中的操作
  14. public function __construct($site, $role)
  15. {
  16. $this->site = $site;
  17. $this->role = $role;
  18. echo $this->getInfo();
  19. }
  20. }
  21. // 3. 访问类成员
  22. new Demo3('PHP中文网', 'Lecture');

4.类成员的访问控制

  1. <?php
  2. // 访问控制,实现类的封装
  3. // 1. 创建类
  4. class Demo4
  5. {
  6. // 2. 添加类成员
  7. public $site;
  8. protected $role;
  9. public function getInfo()
  10. {
  11. return '我是: ' . $this->site . $this->role;
  12. }
  13. public function __construct($site, $role)
  14. {
  15. $this->site = $site;
  16. $this->role = $role;
  17. }
  18. public function __get($name)
  19. {
  20. $username = $_GET['username'] ?? '';
  21. if (isset($username) && $username === 'admin') {
  22. return isset($this->$name) ? $this->$name : '属性未定义';
  23. } else {
  24. return '无权访问';
  25. }
  26. }
  27. }
  28. // 3. 访问类成员
  29. $obj = new Demo4('www.php.cn', '讲师');
  30. echo $obj->role;
  31. echo '<br>';
  32. echo $obj->name;

5.类的继承

  1. <?php
  2. // 类的继承
  3. // 1. 创建类
  4. class Demo5
  5. {
  6. // 2. 添加类成员
  7. public $site;
  8. protected $role;
  9. public function getInfo()
  10. {
  11. return '我是: ' . $this->site . '讲师: ' . $this->role;
  12. }
  13. // 构造方法
  14. public function __construct($site, $role)
  15. {
  16. $this->site = $site;
  17. $this->role = $role;
  18. }
  19. }
  20. class Demo5_1 extends Demo5
  21. {
  22. // 当前子类的自身属性
  23. private $course;
  24. public function __construct($site, $role, $course)
  25. {
  26. // parent:: 调用 父类中的成员
  27. parent::__construct($site, $role);
  28. $this->course = $course;
  29. }
  30. // 重写父类中的方法
  31. public function getInfo()
  32. {
  33. return parent::getInfo() . ', 负责的课程是: ' . $this->course;
  34. }
  35. }
  36. // 3. 访问类成员
  37. $sub = new Demo5_1('php.cn', '朱老师', 'php');
  38. echo $sub->getInfo();

6.trait技术

  1. <?php
  2. trait Test
  3. {
  4. public function getInfo()
  5. {
  6. return '我是: ' . $this->site . '讲师: ' . $this->role;
  7. }
  8. }
  9. // 1. 创建类
  10. // Demo6: 宿主类
  11. class Demo6
  12. {
  13. // 导入trait类库
  14. use Test;
  15. // 2. 添加类成员
  16. public $site;
  17. protected $role;
  18. // 构造方法
  19. public function __construct($site, $role)
  20. {
  21. $this->site = $site;
  22. $this->role = $role;
  23. }
  24. }
  25. class Demo6_1 extends Demo6
  26. {
  27. // 当前子类的自身属性
  28. private $course;
  29. public function __construct($site, $role, $course)
  30. {
  31. // parent:: 调用 父类中的成员
  32. parent::__construct($site, $role);
  33. $this->course = $course;
  34. }
  35. // 3. 访问类成员
  36. $obj = new Demo6('php中文网', 'Peter Zhu');
  37. echo $obj->getInfo();
  38. echo '<hr>';
  39. $sub = new Demo6_1('php.cn', '朱老师', 'php');
  40. echo $sub->getInfo();

7.接口interface

  1. <?php
  2. interface iDemo
  3. {
  4. // 接口方法
  5. public function getInfo();
  6. public function hello();
  7. }
  8. // 1. 创建类
  9. // Demo7: 工作类
  10. class Demo7 implements iDemo
  11. {
  12. // 2. 添加类成员
  13. public $site;
  14. protected $role;
  15. public function getInfo()
  16. {
  17. return '我是: ' . $this->site . '讲师: ' . $this->role;
  18. }
  19. public function hello()
  20. {
  21. return 'Hello 大家晚上吃饱了吗?';
  22. }
  23. // 构造方法
  24. public function __construct($site, $role)
  25. {
  26. $this->site = $site;
  27. $this->role = $role;
  28. }
  29. }
  30. // 3. 访问类成员
  31. $obj = new Demo7('php中文网', '猪老师');
  32. echo $obj->getInfo() . '<br>';
  33. echo $obj->hello() . '<br>';

8.抽象类abstract

  1. <?php
  2. abstract class Chouxiang
  3. {
  4. // 抽象方法
  5. abstract public function getInfo();
  6. // 已实现方法
  7. public function hello()
  8. {
  9. return 'Hello 大家晚上吃饱了吗?';
  10. }
  11. }
  12. // 1. 创建类
  13. // Demo8: 工作类
  14. class Demo8 extends Chouxiang
  15. {
  16. // 2. 添加类成员
  17. public $site;
  18. protected $role;
  19. public function getInfo()
  20. {
  21. return '我是: ' . $this->site . '讲师: ' . $this->role;
  22. }
  23. // 构造方法
  24. public function __construct($site, $role)
  25. {
  26. $this->site = $site;
  27. $this->role = $role;
  28. }
  29. }
  30. // 3. 访问类成员
  31. $obj = new Demo8('php中文网', '猪哥');
  32. echo $obj->getInfo() . '<br>';
  33. echo $obj->hello() . '<br>';


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