第二节--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迭代器实现斐波纳契数列的函数
Nov 12 PHP
php上传文件并存储到mysql数据库的方法
Mar 16 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
Sep 10 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 PHP
微信开发之网页授权获取用户信息(二)
Jan 08 PHP
PHP统计目录中文件以及目录中目录大小的方法
Jan 09 PHP
YII视图整合kindeditor扩展的方法
Jul 13 PHP
php实现的XML操作(读取)封装类完整实例
Feb 23 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
Mar 14 PHP
php-fpm服务启动脚本的方法
Apr 27 PHP
PHP获取真实IP及IP模拟方法解析
Nov 24 PHP
php png失真的原因及解决办法
Oct 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编码规范的深入探讨
2013/06/06 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
优秀js开源框架-jQuery使用手册(1)
2007/03/10 Javascript
[推荐]javascript 面向对象技术基础教程
2009/03/03 Javascript
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
探讨jQuery的ajax使用场景(c#)
2013/12/03 Javascript
javascript弹出页面回传值的方法
2015/01/28 Javascript
js实现鼠标滑过文字链接色彩变化的效果
2015/05/06 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
有关json_decode乱码及NULL的问题
2015/10/13 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
小试SVG之新手小白入门教程
2019/01/08 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
[08:08]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY
2014/06/25 DOTA
[43:24]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS Liquid
2018/03/30 DOTA
Python基础教程之利用期物处理并发
2018/03/29 Python
对Pyhon实现静态变量全局变量的方法详解
2019/01/11 Python
Python常见数据类型转换操作示例
2019/05/08 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
利用python实现AR教程
2019/11/20 Python
python实现两个字典合并,两个list合并
2019/12/02 Python
使用Python+selenium实现第一个自动化测试脚本
2020/03/17 Python
365 Tickets英国:全球景点门票
2019/07/06 全球购物
药物学专业学生的自我评价
2013/10/27 职场文书
小学生家长评语大全
2014/02/10 职场文书
实习生岗位职责
2014/04/12 职场文书
学生会竞选演讲稿纪检部
2014/08/25 职场文书
我爱家乡演讲稿
2014/09/12 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
个人工作失误的保证书怎么写?
2019/06/21 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL
详解Mysql 函数调用优化
2021/04/07 MySQL