Blogger Information
Blog 26
fans 1
comment 0
visits 22365
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP第课 对着天空,将OOP编程的三大步骤,大声的喊10遍 12月3日
孤忆寻昔R
Original
1038 people have browsed it

作业一






作业二

  1. <?php
  2. //oop基本编程步骤
  3. //1、创建类
  4. class Demo1
  5. {
  6. //2、添加类成员
  7. //在类中的变量和函数,和成渝中的变量函数有区别,添加了访问限制符
  8. //变量=》属性,函数=》方法, 访问限制符 成员
  9. public $site = 'phpstorm';
  10. //创建方法: 输出当前类的属性$site
  11. public function getSie()
  12. {
  13. // 1、第一步: 类的实例化
  14. $obj = new Demo1();
  15. // 2、第二步: 返回类属性
  16. return $obj ->site . '快来使用';
  17. }
  18. }
  19. //3、访问类成员
  20. $obj =new Demo1();
  21. //访问属性: 对象成员访问符:->
  22. echo $obj->site.'</br>';
  23. echo $obj->getSie();
  24. <?php
  25. class Demo2
  26. {
  27. public $site = '中文表层';
  28. public $role = '讲师';
  29. public function getSite()
  30. {
  31. // 1、实例化对象
  32. $obj = new self;
  33. return $obj->site . '感谢使用';
  34. // 2、放回类属性
  35. }
  36. public function getRole()
  37. {
  38. // $obj = new self;
  39. return $this->role;
  40. }
  41. }
  42. $obj = new Demo2();
  43. echo $obj->site.'<br>';
  44. //echo $obj->getSite();
  45. echo $obj->getRole();
  46. <?php
  47. class Demo3
  48. {
  49. //类成员
  50. public $site;
  51. public $role;
  52. public function getInfo()
  53. {
  54. return '我是:'.$this->role.$this->role;
  55. }
  56. // 构造方法:
  57. // 1、类实例的初始化;2、制动完成在类实例创建过程中的操作
  58. public function __construct($site,$role)
  59. {
  60. // 1、初始化类成员
  61. $this->site = $site;
  62. $this->role = $role;
  63. // 2、创建类实例
  64. // $obj = new self;
  65. // 3、添加类实例成员
  66. // $obj->site = $this->site;
  67. // $obj->role = $this->role;
  68. // 在类实例化是会自动执行
  69. echo $this->getInfo();
  70. // 4、返回类实例
  71. // return $obj;
  72. }
  73. }
  74. $obj = new Demo3('中文网','Lecture');
  75. <?php
  76. //访问控制,实现类的封装
  77. class Demo4
  78. {
  79. // 添加成员
  80. public $site;
  81. // private $name = 'pterSer';
  82. //如果不想该属性在类的外部访问,可以将该属性的访问控制符修改为:
  83. // protected 、 private
  84. // public $role;
  85. protected $role;
  86. public function getInfo()
  87. {
  88. return '我是:'.$this->site.$this->role;
  89. }
  90. public function __construct($site,$role)
  91. {
  92. $this->site = $site;
  93. $this->role = $role;
  94. }
  95. //外部无权访问,是为了防止非法访问,并代表禁止访问
  96. // 为这样的属性创建一个访问器方法,来过滤要不过户的访问轻松
  97. /*public function getRoe()
  98. {
  99. //允许用户名是‘admin’的用户访问,其他访问返回: 无权访问
  100. $username = $_GET['username'] ?? '';
  101. if(isset($username) && $username ==='admin')
  102. {
  103. return $this->role;
  104. } else {
  105. echo '无权访问';
  106. }
  107. }
  108. public function getName()
  109. {
  110. return isset($this->name) ? $this->name : '不存在该属性';
  111. }*/
  112. //魔术方式: __get($name) ,属性重载
  113. // 访问不存在的成员属性可以使用,省去为成员 重新定的方法
  114. public function __get($name)
  115. {
  116. $username = $_GET['username'] ?? '';
  117. if(isset($username) && $username === 'admin')
  118. {
  119. return isset($this->$name) ? $this->$name : '属性未定义';
  120. } else {
  121. return '无权访问';
  122. }
  123. }
  124. }
  125. //访问类成员
  126. $obj = new Demo4('www.baidu.com','引擎');
  127. echo $obj ->role.'<br>';
  128. //使用访问器方法
  129. //echo $obj->getRoe();
  130. echo '<hr>';
  131. //echo $obj->getName();
  132. echo $obj->name;
  133. <?php
  134. //类的继承
  135. //1、创建类
  136. class Demo5
  137. {
  138. //2、添加类成员
  139. public $site ;
  140. protected $role;
  141. public function getInfo()
  142. {
  143. return '我是:' .$this->site. $this->role;
  144. }
  145. public function __construct($site,$role)
  146. {
  147. $this->site = $site;
  148. $this->role = $role;
  149. }
  150. }
  151. class Demo5_1 extends Demo5
  152. {
  153. // 当前是子类自身的属性
  154. private $course;
  155. public function __construct($site, $role,$course)
  156. {
  157. //parent: 调用父类的成员
  158. parent::__construct($site, $role);
  159. $this->course = $course;
  160. }
  161. //重写父类中的方法
  162. public function getInfo()
  163. {
  164. return parent::getInfo(). ',负责的课程是:'.$this->course;
  165. }
  166. }
  167. //3、访问类成员
  168. $sub = new Demo5_1('baidu.com','朱老师','PHP');
  169. echo $sub->getInfo();
  170. <?php
  171. //trait: 代码复用方式,用来扩用当前类的功能
  172. //trait: 当一个公共方法库
  173. //trait: 使用了类的定义语法,但不是类,所以不能实例化
  174. trait Test
  175. {
  176. public function getInfo()
  177. {
  178. return '我是:'.$this->site .'讲师'.$this->role;
  179. }
  180. }
  181. //创建类
  182. class Demo6
  183. {
  184. // 导入trait类库
  185. use Test;
  186. public $site;
  187. protected $role;
  188. // public function getInfo()
  189. // {
  190. // return '我是:'.$this->site .$this->role;
  191. // }
  192. public function __construct($site,$role)
  193. {
  194. $this->site = $site;
  195. $this->role = $role;
  196. }
  197. }
  198. //trait: 还可以用在类的上下文环境中
  199. class Demo6_1 extends Demo6
  200. {
  201. private $counstr;
  202. public function __construct($site,$role,$counstr)
  203. {
  204. parent::__construct($site,$role);
  205. return $this->counstr = $counstr;
  206. }
  207. // 从写父类
  208. public function getInfo()
  209. {
  210. return parent::getInfo().',我负责是:'.$this->counstr;
  211. }
  212. }
  213. //优先级: 当前类中的同名方法 > trait ,类中的同名方法 > 父类中的同名方法
  214. //3、 访问类成员
  215. $obj = new Demo6('百度搜索','PeterZhu','sdf');
  216. echo $obj->getInfo();
  217. echo '<hr>';
  218. $sub = new Demo6_1('百度搜索','PeterZhu','sdf');
  219. echo $sub->getInfo();
  220. <?php
  221. //接口:
  222. //对象的模板就是类,类的对象时接口
  223. //面向接口编程时最重要的思想编程之一,许多高级应用都是严重依赖与它
  224. //接口是一种预定,定义了实现它的类中必须实现的方法
  225. //接口中没有方法的具体实现,所以不能实例化
  226. interface iDemo
  227. {
  228. //接口中有常量,
  229. // 接口方法
  230. public function getInfo();
  231. public function hello();
  232. public function Name();
  233. }
  234. //1、创建类
  235. class Demo7 implements iDemo
  236. {
  237. //2、添加成员
  238. public $site;
  239. protected $role;
  240. public function getInfo()
  241. {
  242. return '我是:'.$this->site.'讲师'.$this->role;
  243. }
  244. public function hello()
  245. {
  246. return 'Hello 大家今天学习了?';
  247. }
  248. public function Name()
  249. {
  250. return $this->site.'今天休息'.$this->role;
  251. }
  252. //构造方法
  253. public function __construct($site,$role)
  254. {
  255. $this->site = $site;
  256. $this->role = $role;
  257. }
  258. }
  259. //3、访问类成员
  260. $obj = new Demo7('baidu','祝好是');
  261. echo $obj->getInfo().'<br>';
  262. echo $obj->hello().'<br>';
  263. echo $obj->Name();
  264. <?php
  265. //抽象类:
  266. //抽象:有抽象方法,也有实现的方法
  267. //接口中全是抽象方法
  268. //共同之处: 统统不能实例化,原因是内部有抽象方法
  269. abstract class Chouxiang
  270. {
  271. //抽象方法
  272. abstract public function getInfo();
  273. //已实现方法
  274. public function hello()
  275. {
  276. return 'Hello 大家今天学习了?';
  277. }
  278. }
  279. //1、创建类
  280. class Demo8 extends Chouxiang
  281. {
  282. //2、添加成员
  283. public $site;
  284. protected $role;
  285. public function getInfo()
  286. {
  287. return '我是:'.$this->site.'讲师'.$this->role;
  288. }
  289. // 构造方法
  290. public function __construct($site,$role)
  291. {
  292. $this->site = $site;
  293. $this->role =$role;
  294. }
  295. }
  296. //3、访问类成员
  297. $obj = new Demo8('百度搜索','全站搜索');
  298. echo $obj->getInfo().'<br>';
  299. echo $obj->hello();
  300. echo $obj->Name();

总结

1、三大步骤, 创建类 、 添加成员、 访问成员

2、构造方法,实例化对象后 new(’name’,’age’,’sex’);必须传参

3、在子类中可以继承extend,可以重写父类方法,Trait可以复制复用方法!

4、接口中出现的方法必须实现和继承, 抽象就是给其他方法继承的!都不能实例化

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