php之接口概念
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php之接口概念,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4189字,纯文字阅读大概需要6分钟。
内容图文
1 <?php 2/*** 3类:是某一类事物的抽象,是某类对象的蓝图 4接口:接口本身的方法就是抽象的,不用加abstract 5 6类如果是一种事物/生物的抽象 7那么接口,则是事物/生物的功能的抽象 8即,再把他们的功能拆成小块 9自由组合成新的物种 10比如:女娲造人脑子中的形象就是人类class Human 11如果,女娲决定造人时,同时,形象又没最终定稿时, 12她脑子有哪些支离破碎的形象呢 13 14她可能会这么思考: 15动物:吃饭 16猴子:奔跑 17猴子:哭 18自己:思考 19小鸟:飞 20 21我造一种生物,人,应该有如下功能 22eat(); 23run(); 24cry(); 25think(); 26fly(); 27 28***/ 29interface animal { 30publicfunction eat(); 31} 32 33interface monkey { 34publicfunction run(); 35publicfunction cry(); 36} 37 38interface wisdom { 39publicfunction think(); 40} 41 42interface bird { 43publicfunction fly(); 44} 45/*** 46如上,我们把每个类中的这种实现的功能拆出来 47分析:如果一种新生物,实现了eat()+run()+cry()+think(),这种生物叫做人 48***/ 49class Human implements animal,monkey,wisdom{ 50publicfunction eat() { 51echo ‘吃‘; 52 } 53publicfunction run() { 54echo ‘走‘; 55 } 56publicfunction cry() { 57echo ‘哭‘; 58 } 59publicfunction think() { 60echo ‘思考‘; 61 } 62} 63$lisi = new Human(); 64$lisi->think(); 65 66 67 1:接口本身即是抽象的,内部声明的方法默认也是抽象的 68 69 2:一个类可以一次性实现多个接口 70语法用implements 实现 71class ClassName implements interface1,interface2,interface3 {} 72然后再把接口的功能给实现 73 74 3:接口也可以继承,也是用extends 75 76 4:接口是一堆方法的说明,不能加属性 77 78 5:接口就是供组装成类用的,封闭起来没有意义,因此方法只能是public 79 ***/ 80 81interface animal { 82publicfunction eat(); 83} 84 85interface monkey extends animal { 86publicfunction run(); 87publicfunction cry(); 88} 89 90interface wisdom { 91publicfunction think(); 92} 93 94interface bird { 95publicfunction fly(); 96} 97//下面这是错误的,因为monkey继承了animal接口,因此必须要把eat()实现才行,Fatal error: Class Human contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (animal::eat) 98/* 99class Human implements monkey,wisdom{ 100 public function run() { 101 echo ‘走‘; 102 } 103 public function cry() { 104 echo ‘哭‘; 105 } 106 public function think() { 107 echo ‘思考‘; 108 } 109} 110*/111class Human implements monkey,wisdom{ 112publicfunction eat() { 113echo ‘吃‘; 114 } 115publicfunction run() { 116echo ‘走‘; 117 } 118publicfunction cry() { 119echo ‘哭‘; 120 } 121publicfunction think() { 122echo ‘思考‘; 123 } 124} 125126127128/*** 129面向对象的一个观点 130做的越多,越容易犯错 131132抽象类(就定义模板)--具体子类实现 133134接口: 135136137***/138//抽象的数据库类139/*** 140创业,做网站 141用什么数据库?mysql,oracle,sqlserver,postgresql 142先开发网站,运行再说 143先弄个mysql开发着,真正上线了再改数据库也不迟 144145引来问题: 146换数据库,以前的代码又得重写? 147148答:不必,用抽象类 149开发者,开发时就以db抽象类来开发 150151***/152abstractclass db { 153publicabstractfunction connect($h,$u,$p); 154publicabstractfunction query($sql); 155publicabstractfunction close(); 156} 157158//下面代码有误,connect和抽象类的connect的参数不一致159/*** 160class mysql extends db { 161 public function connect($h,$u) { 162 return true; 163 } 164 public function query($sql,$conn) { 165166 } 167 public function close() { 168169 } 170} 171172173***/174175/*** 176下面这个mysql类,严格实现了dn抽象类 177***/178classmysqlextends db { 179publicfunction connect($h,$u,$p) { 180returntrue; 181 } 182publicfunction query($sql) { 183184 } 185publicfunction close() { 186187 } 188} 189/*** 190试想:不管上线时,真正用什么数据库 191我只需要再写一份如下类 192class oracle extends db { 193} 194195class sqlserver extends db { 196} 197198class postgresql extends db { 199} 200201业务逻辑不用改 202因为都实现的db抽象类 203204我开发时,调用方法不清楚的地方,就可以参考db抽象类 205反正子类都是严格实现类的 206207***/208209210/*** 211接口就更抽象了 212213比如一个社交网站 214215关于用户的处理是核心应用 216217登陆 218退出 219写信 220看信 221招呼 222更换心情 223吃饭 224骂人 225捣乱 226撩骚 227228这么多的方法,都是用户的方法 229自然可以写一个user类,全包装起来 230231但是,分析用户一次性使不了这么多方法 232233用户信息类:{登陆,写信,招呼,更换心情,退出} 234用户娱乐类:{登陆,骂人,捣乱,示爱,撩骚,退出} 235236开发网站前,分析出来这么多方法 237但是,不能都装在一个类里 238分成了2个类,甚至更多 239240作为应用逻辑的开发,这么多的类,这么多的方法,都晕了 241242243***/244interface UserBase { 245publicfunction login($u,$p); 246publicfunction logout(); 247} 248249interface UserMsg { 250publicfunction writeMsg($to,$title,$content); 251publicfunction readMsg($from,$title); 252} 253254interface UserFun { 255publicfunction spit($to); 256publicfunction showLove($to); 257} 258259/*260作为调用者,我不需要了解你的用户信息类,用户娱乐类 261我就可以知道如何调用者2个类 262263因为:这2个类,都要实现上述接口 264通过这个接口,就可以规范开发 265*/266267268269/*下面这个类,和接口声明的方法的参数不一致,就报错 270这样,接口强制统一了类的功能 271不管你有几个类,一个类中有几个方法 272273我只知道,方法都是实现的接口的方法 274*/275class User implements UserBase { 276publicfunction login($u) { 277 } 278} 279 ?>
原文:http://www.cnblogs.com/museluo/p/4673334.html
内容总结
以上是互联网集市为您收集整理的php之接口概念全部内容,希望文章能够帮你解决php之接口概念所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。