第一节--面向对象编程


Posted in PHP onNovember 16, 2006

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

第一节--面向对象编程

面向对象编程被设计来为大型软件项目提供解决方案,尤其是多人合作的项目. 当源代码增长到一万行甚至更多的时候,每一个更动都可能导致不希望的副作用. 这种情况发生于模块间结成秘密联盟的时候,就像第一次世界大战前的欧洲.

//haohappy注:喻指模块间的关联度过高,相互依赖性太强.更动一个模块导致其它模块也必须跟着更动.

想像一下,如果有一个用来处理登录的模块允许一个信用卡处理模块来分享它的数据库连接. 当然出发点是好的,节省了进行另一个数据库连接的支出.然而有时,登录处理模块改变了其中一个变量的名字,就可能割断了两者间的协议.导致信用卡模块的处理出错,进而导致处理发票的模块出错. 很快地,体系中所有无关的模块都可能由此出错.

因此,我觉得有点戏剧性地,绝大多数程序员都对耦合和封装心存感激. 耦合是两个模块间依赖程度的量度. 耦合越少越好.我们希望能够从已有的项目中抽走一个模块并在另一个新项目中使用. 

我们也希望在某个模块内部大规模的更动而不用担心对其他模块的影响. 封装的原则可以提供这个解决方案.模块被看待成相对独立,并且模块间的数据通信通过接口来进行. 模块不通过彼此的变量名来窥探另一个模块,它们通过函数来礼貌地发送请求.

封装是你可以在任何编程语言中使用的一个原则. 在PHP和许多面向过程的语言中,可以偷懒是很有诱惑的.没有什么可以阻止你通过模块来构建一个假想的WEB. 面向对象编程是使程序员不会违背封装原则的一种方法.

在面向对象编程中,模块被组织成一个个对象. 这些对象拥有方法和属性. 从抽象的角度来看,方法是一个对象的所做的动作,而属性是对象的特性.从编程角度来看,方法就是函数而属性是变量. 在一个理想化的面向对象体系中,每个部份都是一个对象. 体系由对象及对象间通过方法来形成的联系构成.

一个类定义了对象的属性. 如果你在烘烤一组甜饼对象,那么类将会是甜饼机. 类的属性和方法是被调用的成员. 人们可以通过说出数据成员或者方法成员来表达.

每种语言提供了不同的途径来访问对象. PHP从C++中借用概念,提供一个数据类型用来在一个标识符下包含函数和变量。最初设计PHP的时候,甚至PHP3被开发出时,PHP并不打算提供开发超过10万行代码的大型项目的能力。随着PHP和Zend引擎的发展,开发大型项目变得有可能,但无论你的项目规模多大,用类来书写你的脚本将可以让代码实现重用。这是一个好主意,特别当你愿意与别人分享你的代码的时候。

有关对象的想法是计算机科学上最令人兴奋的概念之一。开始很难掌握它,但我可以保证,一旦你掌握了它,用它的思维来思考将会非常自然。

PHP 相关文章推荐
php购物网站支付paypal使用方法
Nov 28 PHP
php截取后台登陆密码的代码
May 05 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
Jun 28 PHP
php获取网页中图片、DIV内容的简单方法
Jun 19 PHP
php新浪微博登录接口用法实例
Dec 23 PHP
PHP调用MySQL存储过程并返回值的方法
Dec 26 PHP
YII Framework框架教程之安全方案详解
Mar 14 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
Nov 25 PHP
详解PHP中的序列化、反序列化操作
Mar 21 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
Jul 19 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
Oct 09 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
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
Oct 09 #PHP
You might like
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
php错误日志简单配置方法
2016/07/11 PHP
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
THREE.JS入门教程(3)着色器-下
2013/01/24 Javascript
JS设置下拉列表框当前所选值的方法
2015/12/22 Javascript
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
2017/05/17 Javascript
从对象列表中获取一个对象的方法,依据关键字和值
2017/09/20 Javascript
详解在Vue中有条件地使用CSS类
2017/09/30 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
微信小程序 MinUI组件库系列之badge徽章组件示例
2018/08/20 Javascript
JavaScript私有变量实例详解
2019/01/24 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
2019/05/05 Javascript
vue中提示$index is not defined错误的解决方式
2020/09/02 Javascript
[03:39]DOTA2英雄梦之声_第05期_幽鬼
2014/06/23 DOTA
zbar解码二维码和条形码示例
2014/02/07 Python
python利用selenium进行浏览器爬虫
2019/04/25 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
jupyter notebook 实现matplotlib图动态刷新
2020/04/22 Python
python的Jenkins接口调用方式
2020/05/12 Python
基于CSS3制作立体效果导航菜单
2016/01/12 HTML / CSS
HTML5 与 XHTML2
2008/10/17 HTML / CSS
关于iframe跨域使用postMessage的实现
2019/10/29 HTML / CSS
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
商务经理岗位职责
2014/08/03 职场文书
银行奉献演讲稿
2014/09/16 职场文书
教师党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
2014年组织委员工作总结
2014/12/01 职场文书
中考学习决心书
2015/02/04 职场文书
2015年基层党支部工作总结
2015/05/21 职场文书
2015年行政执法工作总结
2015/05/23 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
烈士陵园扫墓感想
2015/08/07 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书
python实现的web监控系统
2021/04/27 Python
Golang 实现超大文件读取的两种方法
2021/04/27 Golang