PHP笔记:接口,自动加载机制,序列化与反序列化,对象的克隆..docxVIP

PHP笔记:接口,自动加载机制,序列化与反序列化,对象的克隆..docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PHP接口结构,interface 接口:指的是对象的公共方法 也有一种接口技术,定义一个接口结构,用于限制一个类(对象)应该具备的公共方法(接口方法)! 语法: 使用关键字 interface 声明一个接口结构! 声明: interface i_Goods { public function sayName(); public function sayPrice(); } 注意:接口内只能包含 公共的抽象方法(不完整的方法)! 使用: 使一个类来实现接口内定义的所有接口方法(公共方法) 实现:使用关键字 implements 来完成 interface i_Goods { public function sayName(); public function sayPrice(); } abstract class Godds implements i_Goods { } class Shop implements i_Goods { public function sayName() { } public function sayPrice() { } } 明显,实现接口结构的类,就包含了接口中定义的抽象方法,两个选择: 1:定义成抽象类 2:实现接口方法 类似于抽象类,比较与接口的区别: 1:抽象类与普通类之间是继承关系 ???? 普通类继承抽象类,第一,可以得到抽象类中的已有的常规成员,第二,才需要实现抽象方法(也不一定是 public 的) 2:接口与普通类之间是实现关系 ???? 普通类实现了接口,只能将其没有实现的公共方法实现 3:接口只用于定义公共的方法,而抽象类,什么都可以有 典型的使用: 多实现 一个类,可以同时实现多个接口 interface i_a { public function sayA(); } interface i_b { public function sayB(); } class A implements i_a,i_b { } 接口可以定义常量: interface i_a { const PAI = 3.14; public function sayA(); } interface i_b { public function sayB(); } class A implements i_a,i_b { public function sayA() { } public function sayB() { } } echo A::PAI; 辨别? 1:接口是不是类?????NO ???? 可以用 class_exists(); 判断是不是类 2:PHP是单继承,怎么实现多继承? ???? “可以通过接口的多实现来模拟” 此说法是错误的 ???? 答案:不能实现多继承 类文件的载入-自动加载机制 项目中如何管理大量的类的定义? 典型的,每个类,独立的创建一个文件,用于保存定义该类的源代码!使用时,将该文件载入即可! 此时,类文件的命名为:类名.class.php 此时,面临一个类文件很多,某个功能需要使用其中部分类: 如何合理方便载入? 老办法: 将载入类的代码,放在一起 问题是:会有类的额外加载 现在的载入类文件的方式是:按需加载 在需要某个类时,如果该类没有被加载,则加载定义该类的类文件 判断当前类是否已经加载? 该类在哪个文件中? 什么时机执行上面的操作? (自动加载机制来完成) 此时可以使用PHP的类文件,自动加载机制完成! 自动加载机制 当需要一个类,但是并没有找到该类的定义,此时,PHP核心(Zend Engine)会自动尝试调用一个叫: __autoload() 的函数。与此同时,会将当前所需要的类名作为参数,传递到 __autoload() 这个函数中 默认是没有这个函数的,需要用户自己定义! 因此,用户脚本需要完成定义该函数 该函数应该有个形参,用于得到当前所需要的类名 示例: function __autoload($class_name) { require ./.$class_name.class.php; } new Book; 此时,输出的结果为: 此时,我们只要完成该函数,利用得到的类名,将类名所对应的文件载入即可 序列化,反序列化(串行化,反串行化) 场景: 数据的持久性保存! 例如:将数据保存在文件内 向文件写入数据: 写入的长度 = file_put_contents(quot;文件quot;,quot;数据quot;); 从文件读取数据: 数据 = file_get_contents(quot;文件quot;); 写入: $data = ginvip; echo 写入前的数据:lt;br /

文档评论(0)

20010520 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档