第二节--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 相关文章推荐
PHP5.2下chunk_split()函数整数溢出漏洞 分析
Jun 06 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
Sep 01 PHP
PHP array_multisort()函数的使用札记
Jul 03 PHP
wordpress自定义url参数实现路由功能的代码示例
Nov 28 PHP
php文件上传的例子及参数详解
Dec 12 PHP
深入分析PHP引用(&amp;)
Sep 04 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
Nov 29 PHP
PHP实现返回JSON和XML的类分享
Jan 28 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
Jan 29 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
PHP实现15位身份证号转18位的方法分析
Oct 16 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
Jul 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
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
PHP页面间传递参数实例代码
2008/06/05 PHP
jquery不支持toggle()高(新)版本的问题解决
2016/09/24 PHP
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
2014/05/28 Javascript
js自定义鼠标右键的实现原理及源码
2014/06/23 Javascript
纯javascript代码实现计算器功能(三种方法)
2015/09/07 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
bootstrap table操作技巧分享
2017/02/15 Javascript
Node.js 基础教程之全局对象
2017/08/06 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
Node.js引入UIBootstrap的方法示例
2018/05/11 Javascript
CryptoJS中AES实现前后端通用加解密技术
2018/12/18 Javascript
使用JavaScript计算前一天和后一天的思路详解
2019/12/20 Javascript
JavaScript实现简单验证码
2020/08/24 Javascript
[08:40]Navi Vs Newbee
2018/06/07 DOTA
Python中Collection的使用小技巧
2014/08/18 Python
python利用lxml读写xml格式的文件
2017/08/10 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
200 行python 代码实现 2048 游戏
2018/01/12 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
Canvas 文字碰撞检测并抽稀的方法
2019/05/27 HTML / CSS
德国大型的家具商店:Pharao24.de
2016/10/02 全球购物
我有一个梦想演讲稿
2014/05/05 职场文书
理财计划书
2014/08/14 职场文书
无房证明范本
2014/09/17 职场文书
2014年派出所工作总结
2014/11/21 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
2016学习雷锋精神活动倡议书
2015/04/27 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
Python基础学习之奇异的GUI对话框
2021/05/27 Python