|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果你单纯是为了做网站赚钱,我想你还是别学php的好,去学ASP,JSP好了,毕竟它们有实力雄厚的公司去支持它们。 面向对象编程被设计来为大型软件项目供应处理计划,特别是多人协作的项目. 当源代码增加到一万行乃至更多的时分,每个更动都能够招致不但愿的反作用. 这类情形产生于模块间结成奥密同盟的时分,就像第一次世界大战前的欧洲。
//haohappy注:喻手印块间的联系关系渡过高,互相依附性太强.更动一个模块招致其它模块也必需随着更动。
想像一下,假如有一个用来处置登录的模块答应一个信誉卡处置模块来分享它的数据库毗连. 固然起点是好的,节俭了停止另外一个数据库毗连的收入.但是有时,登录处置模块改动了个中一个变量的名字,便可能切断了二者间的协定.招致信誉卡模块的处置失足,进而招致处置发票的模块失足. 很快地,系统中一切有关的模块都能够由此失足.
因而,我感觉有点戏剧性地,绝大多半法式员都对耦合和封装心存感谢. 耦合是两个模块间依附水平的量度. 耦合越少越好.咱们但愿可以从已有的项目中抽走一个模块并在另外一个新项目中利用.
咱们也但愿在某个模块外部大范围的更动而不必忧虑对其他模块的影响. 封装的准绳可以供应这个处理计划.模块被对待成绝对自力,而且模块间的数据通讯经由过程接口来停止. 模块欠亨过彼此的变量名来窥测另外一个模块,它们经由过程函数来礼貌地发送恳求.
封装是你可以在任何编程言语中利用的一个准绳. 在PHP和很多面向进程的言语中,可以偷懒是很有引诱的.没有甚么可以禁止你经由过程模块来构建一个设想的WEB. 面向对象编程是使法式员不会违反封装准绳的一种办法.
在面向对象编程中,模块被组织成一个个对象. 这些对象具有办法和属性. 从笼统的角度来看,办法是一个对象的所做的举措,而属性是对象的特征.从编程角度来看,办法就是函数而属性是变量. 在一个幻想化的面向对象系统中,每一个部分都是一个对象. 系统由对象及对象间经由过程办法来构成的接洽组成.
一个类界说了对象的属性. 假如你在烘烤一组甜饼对象,那末类将会是甜饼机. 类的属性和办法是被挪用的成员. 人们可以经由过程说出数据成员或办法成员来表达.
每种言语供应了分歧的路子来会见对象. PHP从C++中借用概念,供应一个数据类型用来在一个标识符下包括函数和变量。最后设计PHP的时分,乃至PHP3被开辟出时,PHP其实不盘算供应开辟超越10万行代码的大型项目标才能。跟着PHP和Zend引擎的开展,开辟大型项目变得有能够,但不管你的项目范围多大,用类来书写你的剧本将可让代码完成重用。这是一个好主张,出格当你情愿与他人分享你的代码的时分。
有关对象的设法是盘算机迷信上最使人高兴的概念之一。入手下手很难把握它,但我可以包管,一旦你把握了它,用它的思惟来思虑将会十分天然。
PHP5 的对象模子
PHP5有一个单重承继的,限制会见的,可以重载的对象模子. 本章稍后会具体会商的”承继”,包括类间的父-子关系. 别的,PHP撑持对属性和办法的限制性会见. 你可以声明成员为private,不答应内部类会见. 最初,PHP答应一个子类从它的父类中重载成员.
PHP5的对象模子把对象当作与任何其它数据类型分歧,经由过程援用来传递. PHP不请求你经由过程援用(reference)显性传递和前往对象. 在本章的最初将会具体论述基于援用的对象模子. 它是PHP5中最主要的新特征.
有了更直接的对象模子,就具有了附加的优势: 效力进步, 占用内存少,而且具有更大的天真性.
在PHP的前几个版本中,剧本默许复制对象.如今PHP5只挪动句柄,需求更少的工夫. 剧本履行效力的提拔是因为防止了不用要的复制. 在对象系统带来庞杂性的同时,也带来了履行效力上的收益. 同时,削减复制意味着占用更少的内存,可以留出更多内存给其它操作,这也使效力进步.
Zand引擎2具有更大的天真性. 一个使人乐意的开展是答应析构--在对象烧毁之前履行一个类办法. 这关于使用内存也很有优点,让PHP清晰地晓得甚么时分没有对象的援用,把空出的内存分派到其它用处.
<P> PHP5的内存办理
对象传递
PHP5利用了Zend引擎II,对象被贮存于自力的布局Object Store中,而不像其它普通变量那样贮存于Zval中(在PHP4中对象和普通变量一样存储于Zval)。在Zval中仅存储对象的指针而不是内容(value)。当咱们复制一个对象或将一个对象看成参数传递给一个函数时,咱们不需求复制数据。仅仅坚持不异的对象指针并由另外一个zval告诉如今这个特定的对象指向的Object Store。因为对象自己位于Object Store,咱们对它所作的任何改动将影响到一切持有该对象指针的zval布局----体现在法式中就是方针对象的任何改动城市影响到源对象。.这使PHP对象看起来就像老是经由过程援用(reference)来传递,因而PHP中对象默许为经由过程“援用”传递,你不再需求像在PHP4中那样利用&来声明。
渣滓收受接管机制
某些言语,最典范的如C,需求你显式地请求分派内存当你创立数据布局。一旦你分派到内存,就能够在变量中存储信息。同时你也需求在停止利用变量时释放内存,这使机械可以空出内存给其它变量,防止耗光内存。
PHP可以主动停止内存办理,排除不再需求的对象。PHP利用了援用计数(reference counting)这类纯真的渣滓收受接管(garbage collection)机制。每一个对象都内含一个援用计数器,每一个reference毗连到对象,计数器加1。当reference分开保存空间或被设为NULL,计数器减1。当某个对象的援用计数器为零时,PHP晓得你将不再需求利用这个对象,释放其所占的内存空间。
例如:
<?php
class Person{}
function sendEmailTo(){}
$haohappy = new Person( );
// 创立一个新对象: 援用计数 Reference count = 1
$haohappy2 = $haohappy;
// 经由过程援用复制: Reference count = 2
unset($haohappy);
// 删除一个援用: Reference count = 1
sendEmailTo($haohappy2);
// 经由过程援用传递对象:
// 在函数履行时代:
// Reference count = 2
// 履行停止后:
// Reference count = 1
unset($haohappy2);
// 删除援用: Reference count = 0 主动释放内存空间
?>
我先解释一下我的学习思路。 |
|