第二节--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 相关文章推荐
打造计数器DIY三步曲(中)
Oct 09 PHP
Linux下进行MYSQL编程时插入中文乱码的解决方案
Mar 15 PHP
php对gzip文件或者字符串解压实例参考
Jul 25 PHP
Wordpress php 分页代码
Oct 21 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
Oct 25 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
php多维数组去掉重复值示例分享
Mar 02 PHP
PHP获取当前页面URL函数实例
Oct 22 PHP
php简单实现批量上传图片的方法
May 09 PHP
Yii框架中sphinx索引配置方法解析
Oct 18 PHP
PHP实现websocket通信的方法示例
Aug 28 PHP
PHP使用观察者模式处理异常信息的方法详解
Sep 24 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中ob(Output Buffer 输出缓冲)函数使用方法
2007/07/21 PHP
php allow_url_include的应用和解释
2010/04/22 PHP
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
学习javascript,实现插入排序实现代码
2011/07/31 Javascript
javascript + jquery实现定时修改文章标题
2014/03/19 Javascript
JavaScript使用push方法添加一个元素到数组末尾用法实例
2015/04/06 Javascript
javascript属性访问表达式用法分析
2015/04/25 Javascript
Bootstrap Chart组件使用教程
2016/04/28 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
2016/08/17 Javascript
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
node解析修改nginx配置文件操作实例分析
2019/11/06 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
Python多线程爬虫实战_爬取糗事百科段子的实例
2017/12/15 Python
Python实现动态图解析、合成与倒放
2018/01/18 Python
Python生成器定义与简单用法实例分析
2018/04/30 Python
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
Python 变量的创建过程详解
2019/09/02 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
适合Python初学者的一些编程技巧
2020/02/12 Python
python使用列表的最佳方案
2020/08/12 Python
10个python爬虫入门实例(小结)
2020/11/01 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
2021/01/05 Python
会计与审计专业大专生求职信
2013/10/03 职场文书
应急管理培训方案
2014/06/12 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
2015年社区消防安全工作总结
2015/10/14 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript
mysql查询结果实现多列拼接查询
2022/04/03 MySQL
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android
清空 Oracle 安装记录并重新安装
2022/04/26 Oracle