Blogger Information
Blog 26
fans 0
comment 2
visits 35117
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
对类与对象理解与应用(0115PHP开发学习)
小辰
Original
572 people have browsed it

1.第一部分

主要内容:
  • 创建类: class
  • 实例化: new
  • 引用当前类: self
  • 引用当前类实例: $this
  • 引用当前类的父类: parent
  • 对象访问符: ->
  • 范围解析符: 双冒号 ::
  • 类的继承与扩展: extends
  • 成员的访问限制符: private, protceted, public
    实例
    效果图
    代码
  1. <?php
  2. // 创建类sum
  3. class sum
  4. {
  5. //对公共变量进行赋值
  6. public $a =1;
  7. public $b =1;
  8. //创建函数
  9. public function sum($x,$y)
  10. {
  11. $c =$x + $y ;
  12. echo $c;
  13. }
  14. }
  15. /**
  16. * 访问当前类中的属性,实例化1
  17. */
  18. class mydemo
  19. {
  20. public $site = '1.朱老师不帅';
  21. public $date = '3.朱老师很帅';
  22. //private: 属于私有成员,只属于当前,只允许当前类访问,不允许子父类访问,外部也不行
  23. private $cat = '4.私有的猫';
  24. //protected:属于受保护的成员,不允许类外部访问,但可以在子类中访问
  25. protected $pig = '5.帅哥';
  26. public function getSite()
  27. {
  28. // 实例化类
  29. $obj = new mydemo();
  30. // 输出site属性
  31. return '2.反复强调:'.$q=$obj ->site;
  32. }
  33. // 运用当前类的实例$this
  34. public function getIn()
  35. {
  36. return $this ->site;
  37. }
  38. // 构造方法:实例化自动调用
  39. public function __construct ($date='555'){
  40. $this ->site = $date;
  41. }
  42. }
  43. $obj = new mydemo(333);
  44. // 访问site属性,并输出,因为构造方法先执行,实例化重新赋值site
  45. echo $obj ->site;
  46. echo "<br>";
  47. //重新实例化,没传参数,数值变成555
  48. echo $obj ->getSite();
  49. echo "<br>";
  50. echo $obj ->getIn();
  51. echo '<hr>';
  52. //外部无法访问我的猫cat属性
  53. echo '2.反复强调:'.$q=$obj ->site;
  54. // 访问下面无法访问的属性,下面的也显示不出来
  55. // echo $obj ->cat;
  56. // echo $obj ->pig;
  57. echo '<br>'.'无法显示的获取的部分';
  58. echo '<hr>';
  59. //对于继承的使用,继承mydemo类,继承所有满足条件的元素
  60. class Demo2 extends mydemo
  61. {
  62. // 对父类方法扩张
  63. public function getIn(){
  64. return parent:: getIn()."666". $this->hhh;;
  65. }
  66. // public function getIn()
  67. // {
  68. // return parent::getIn() . "讲师: " . $this->hhh;;
  69. // }
  70. public $hhh;
  71. public function __construct($hhh,$date)
  72. {
  73. parent::__construct($date='朱老师帅呆了');
  74. $this -> hhh = $hhh;
  75. }
  76. }
  77. $mobj = new Demo2(9,8);
  78. echo $mobj ->hhh;
  79. echo '<br>';
  80. echo $mobj ->getIn();
  81. echo '<br>';
  82. //通过构造方法赋的值,指这部分construct($hhh,$date),并不会改变类的属性元素
  83. echo $mobj ->date;
  84. ?>

2.对trait的应用

  • 方法集: trait, 代码复用, 突破类的单继承的限制
    效果图
    代码
  1. <?php
  2. // trait: 改变了单继承的模式,实现了代码复用
  3. trait Test
  4. {
  5. public function getInfo()
  6. {
  7. return '我是: ' . $this->site . ' 在学: ' . $this-> role;
  8. }
  9. }
  10. // 不能实例化
  11. // $o = new Test();
  12. // 1. 创建类
  13. class mydemo2
  14. {
  15. // 引用trait
  16. use Test;
  17. public $site;
  18. protected $role;
  19. public function __construct($site='', $role="")
  20. {
  21. $this->site = $site;
  22. $this->role = $role;
  23. }
  24. }
  25. // 基于mydemo2创建子类
  26. class Sub extends mydemo2
  27. {
  28. protected $shuai;
  29. // 重写了父类的__construct()
  30. public function __construct($site, $role, $shuai)
  31. {
  32. parent::__construct($site, $role);
  33. $this->shuai = $shuai;
  34. }
  35. // 重写了父类的getInfo()
  36. public function getInfo()
  37. {
  38. return parent::getInfo() . ', 我帅不帅: '. $this->shuai;
  39. }
  40. }
  41. class Sub99 extends Sub
  42. {
  43. }
  44. //实例化化,传值
  45. $sub = new Sub99('小辰', 'php开发', '帅');
  46. echo $sub->getInfo();

3.小结

通过这次实验,我对于类与对象有了进一步的理解,在第一部分,对于重新实例化,却没有值,所以没地二个结果产生影响。在做trait实验的时候,我把大括号,用成了中文状态下的括号,就一直出错,还好最后找出来问题了,另外基本基本就没有什么问题了。

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