第二节--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 相关文章推荐
用Apache反向代理设置对外的WWW和文件服务器
Oct 09 PHP
十天学会php之第六天
Oct 09 PHP
谈PHP生成静态页面分析 模板+缓存+写文件
Aug 17 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
May 31 PHP
PHP多个文件上传到服务器实例
Oct 29 PHP
使用PHP编写发红包程序
Jul 22 PHP
PHP生成和获取XML格式数据的方法
Mar 04 PHP
PHP数组编码gbk与utf8互相转换的两种方法
Sep 01 PHP
thinkPHP交易详情查询功能详解
Dec 02 PHP
PHP实现的简单路由和类自动加载功能
Mar 13 PHP
PHP实现websocket通信的方法示例
Aug 28 PHP
php的lavarel框架中join和orWhere的用法
Dec 28 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
PHP文件读写操作之文件写入代码
2011/01/13 PHP
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
isArray()函数(JavaScript中对象类型判断的几种方法)
2009/11/26 Javascript
自己整理的一个javascript日期处理函数
2010/10/16 Javascript
javascript之bind使用介绍
2011/10/09 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
Js和JQuery获取鼠标指针坐标的实现代码分享
2015/05/25 Javascript
JavaScript模块规范之AMD规范和CMD规范
2015/10/27 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
2015/12/02 Javascript
jQuery实现本地预览上传图片功能
2016/01/08 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
jQuery检查元素存在性(推荐)
2016/09/17 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
微信小程序实现登录遮罩效果
2018/11/01 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
了解前端理论:rscss和rsjs
2019/05/23 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
Django权限机制实现代码详解
2018/02/05 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
VSCODE配置Markdown及Markdown基础语法详解
2021/01/19 Python
分享CSS3中必须要知道的10个顶级命令
2012/04/26 HTML / CSS
浅谈css3中的前缀
2016/07/20 HTML / CSS
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
2014/06/23 HTML / CSS
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
杭州联环马网络笔试题面试题
2013/08/04 面试题
医学生个人求职信范文
2013/09/24 职场文书
回门宴父母答谢词
2014/01/26 职场文书
股东授权委托书
2014/10/15 职场文书
党支部承诺书
2015/01/20 职场文书
2015年后勤工作总结范文
2015/04/08 职场文书