第二节--PHP5 的对象模型


Posted in PHP onNovember 16, 2006

/*
+-------------------------------------------------------------------------------+
| = 本文为Haohappy读<<Core PHP Programming>> 
| = 中Classes and Objects一章的笔记 
| = 翻译为主+个人心得 
| = 为避免可能发生的不必要的麻烦请勿转载,谢谢 
| = 欢迎批评指正,希望和所有PHP爱好者共同进步! 
| = PHP5研究中心: http://blog.csdn.net/haohappy2004
+-------------------------------------------------------------------------------+
*/

第二节--PHP5 的对象模型

PHP5有一个单重继承的,限制访问的,可以重载的对象模型. 本章稍后会详细讨论的”继承”,包含类间的父-子关系. 另外,PHP支持对属性和方法的限制性访问. 你可以声明成员为private,不允许外部类访问. 最后,PHP允许一个子类从它的父类中重载成员.

//haohappy注:PHP4中没有private,只有public.private对于更好地实现封装很有好处.

PHP5的对象模型把对象看成与任何其它数据类型不同,通过引用来传递. PHP不要求你通过引用(reference)显性传递和返回对象. 在本章的最后将会详细阐述基于句柄的对象模型. 它是PHP5中最重要的新特性.

有了更直接的对象模型,基于句柄的体系有附加的优势: 效率提高, 占用内存少,并且具有更大的灵活性.

在PHP的前几个版本中,脚本默认复制对象.现在PHP5只移动句柄,需要更少的时间. 脚本执行效率的提升是由于避免了不必要的复制. 在对象体系带来复杂性的同时,也带来了执行效率上的收益. 同时,减少复制意味着占用更少的内存,可以留出更多内存给其它操作,这也使效率提高.

//haohappy注:基于句柄,就是说两个对象可以指向同一块内存,既减少了复制动作,又减少对内存的占用.

Zand引擎2具有更大的灵活性. 一个令人高兴的发展是允许析构--在对象销毁之前执行一个类方法. 这对于利用内存也很有好处,让PHP清楚地知道什么时候没有对象的引用,把空出的内存分配到其它用途. 

PHP 相关文章推荐
php简单封装了一些常用JS操作
Feb 25 PHP
探讨PHP删除文件夹的三种方法
Jun 09 PHP
php数组去重复数据示例
Feb 25 PHP
Thinkphp的volist标签嵌套循环使用教程
Jul 08 PHP
Codeigniter发送邮件的方法
Mar 19 PHP
Yii中srbac权限扩展模块工作原理与用法分析
Jul 14 PHP
PHP实现路由映射到指定控制器
Aug 13 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
Oct 09 PHP
php基于websocket搭建简易聊天室实践
Oct 24 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
May 23 PHP
TP5框架实现签到功能的方法分析
Apr 05 PHP
PHP http请求超时问题解决方案
Nov 13 PHP
第一节--面向对象编程
Nov 16 #PHP
MYSQL数据库初学者使用指南
Nov 16 #PHP
php.ini 中文版
Oct 28 #PHP
一个可以找出源代码中所有中文的工具
Oct 25 #PHP
《APMServ 5.1.2》使用图解
Oct 23 #PHP
APMServ使用说明
Oct 23 #PHP
别人整理的服务器变量:$_SERVER
Oct 20 #PHP
You might like
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
2013/06/17 PHP
基于PHP创建Cookie数组的详解
2013/07/03 PHP
php中文验证码实现方法
2015/06/18 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
Yii 2.0如何使用页面缓存方法示例
2017/05/23 PHP
Laravel数据库读写分离配置的方法
2019/10/13 PHP
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
2014/06/24 Javascript
jquery中each方法示例和常用选择器
2014/07/08 Javascript
JavaScript实现彩虹文字效果的方法
2015/04/16 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
基于Bootstrap使用jQuery实现输入框组input-group的添加与删除
2016/05/03 Javascript
微信小程序开发经验总结(推荐)
2017/01/11 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
基于MVC方式实现三级联动(JavaScript)
2017/01/23 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
JavaScript实现身份证验证代码实例
2019/08/26 Javascript
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
js 数据类型判断的方法
2020/12/03 Javascript
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
python 统计数组中元素出现次数并进行排序的实例
2018/07/02 Python
Python TCP通信客户端服务端代码实例
2019/11/21 Python
Python 词典(Dict) 加载与保存示例
2019/12/06 Python
python 实现图片裁剪小工具
2021/02/02 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
新东网科技Java笔试题
2012/07/13 面试题
三字经教学反思
2014/04/26 职场文书
小学优秀教育工作者事迹材料
2014/05/09 职场文书
环保建议书200字
2014/05/14 职场文书
机关领导干部作风整顿整改措施
2014/09/19 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
师德先进个人材料
2014/12/20 职场文书
论文答辩开场白大全
2015/05/27 职场文书
Jpa Specification如何实现and和or同时使用查询
2021/11/23 Java/Android