避免oop的形式,pop的思想 好久没发技术性文章了,今天在21php里看到有位兄弟发了这贴子,转了过来.对加强oop的学习有些用 ———————————————————- 避免oop的形式,pop的思想 随着php对oop(面向对象编程)支持的增强以及程序设计思想的发展,越来越多的php程序员走进了oop的世界.通过简单的学习,大多数程序员都能 快速的掌握oop编程的基本技能.程序员们所写的代码里class,new等字符串也越来越多.但是作为程序员的你,是否陷入了一种oo形式,po思想的 编程陷阱呢? 作为pop时代的程序员,为了实现计算一件房子的所有门的价格,他们会写这样一个函数. 代码: /****************************************** 函数:priceofhousedoor($num,$price) 功能:计算所有的门的价格总和 参数:$num 门的数量,$price 每扇门的价格 备注:surfchen @ http://www.yubeinet.com/ ******************************************/ function pricehousedoor($num,$price) { return $num*$price; } echo pricehousedoor(2,5);//输出价格 或者干脆来个更过程的: 代码: $doors=2;//门数量 $price=5;//每扇门的价格 echo $doors*$price;//输出价格 这是典型的pop.当了解了oop后,很多人可能会改变实现这个功能的代码.或许,程序员们会这么写: 代码: class house { /****************************************** 函数:getdoorprice($num,$price) 功能:计算所有的门的价格总和 参数:$num 门的数量,$price 每扇门的价格 备注:surfchen @ http://www.yubeinet.com/ ******************************************/ function getdoorprice($num,$price) { return $num*$price; } } $house=new house; echo $house->getdoorprice(2,5);//输出价格 我们一下子就看出来,这段代码用到了oop的代表 — 类和实例化.那么,这就是面向对象编程了吗? 我再仔细一看,发现这个类其实只不过是上面的priceofhousedoor($num,$price)函数的面向对象形式. 嗯,现在我们先探讨一下到底什么才叫面向对象编程.我的理解是:面向对象编程有两个核心内容.一是类,二是实例.类是对一类事物的抽象,而实 例是这一类事物中的个体.而实例的属性(值)和方法(函数),则分别是这个个体的具体内容和动作. 我们再来看看上面的这个house类.它有一个方法,getdoorprice($num,$price),引入了两个参数.一个是房子的门的数量,一个是房子门价.我们 发现,当我们使用这个方法时,这两个值是临时构建的,并没有与房子形成任何的联系.在实际生活中,一个房子里的门与房子无任何联系,这是不 可以理解的…正如我们所知道的,oop其实是我们真实世界的一个缩影.所以,oop中的房子和房子的门无任何联系,也是不可理解的,是非oo的思 维. 那么,我们应该如何使用真正的oo来实现以上功能呢?请看以下代码: 代码: class house { var $doors;//门的数量 var $priceperdoors;//每扇门的价格 function setnumofdoors($num){$this->doors=$num;}//设定门数量 function setpriceperdoor($price){$this->priceperdoors=$price;}//设定每扇门的价格 /************* *获得门的价格 * *************/ function getdoorprice() { return ($this->doors)*($this->priceperdoors); } } $house=new house; $house->setnumofdoors(2);//设定门数量 $house->setpriceperdoor(5);//设定每扇门的价格 echo $house->getdoorprice();//输出 我们很明显地看到,以上代码的门的数量和价格房子已经结合在了一起.这才是真正的面向对象. 你不觉得吗?^_^
http://www.bkjia.com/phpjc/532013.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/532013.htmltecharticle避免oop的形式,pop的思想 好久没发技术性文章了,今天在21php里看到有位兄弟发了这贴子,转了过来.对加强oop的学习有些用 ———————-…