讨论PHP面向对象构思、设计、封装、继承、实现的技巧和方法
大家来讨论一下:在PHP中,类的构思,设计,封装,继承与代码实现的技巧和方法?类是php的高级应用,很多人都在使用和发表自己写的类,但是大家可否把自己写类的构思的思路,类的设计思想,类的封装和继承的实现的方法和构思的过程给大家分享一下呢?
授之于鱼,不若授之于渔,大家把自己设计类的构思过程,类的设计的技巧和方法发上来,最好结合相关的例子,请所有的phper和有经验的高手都参与进来,大家各抒己见,相互学习和提高!! 类名,方法命名要好.
严格按照命名去实现 结构一定要合理,类并非只是把变量和函数堆在一起,他们之间的关系要处理好,命名要规范,避免晦涩的命名出现. 这是一门学问呀,可以说是各语言通用的 [quote]原帖由 [i]dzjzmj[/i] 于 2007-1-5 13:43 发表
这是一门学问呀,可以说是各语言通用的 [/quote]
好主意,各种语言都可以,但主要以php为主! 针对接口编程,这在团队开发时非常的有效 [quote]原帖由 [i]hobbs136[/i] 于 2007-1-5 19:10 发表
针对接口编程,这在团队开发时非常的有效 [/quote]
不错,能否举点例子呢 [quote]原帖由 [i]fnet[/i] 于 2007-1-5 23:35 发表
不错,能否举点例子呢 [/quote]
参看这篇文章,很简单,但是很好扩展
[url=http://www.phpchina.com/bbs/thread-15486-1-2.html]http://www.phpchina.com/bbs/thread-15486-1-2.html[/url] [quote]原帖由 [i]hobbs136[/i] 于 2007-1-6 19:01 发表
参看这篇文章,很简单,但是很好扩展
[url=http://www.phpchina.com/bbs/thread-15486-1-2.html]http://www.phpchina.com/bbs/thread-15486-1-2.html[/url] [/quote]
:victory: 呵呵,好文,谢谢了 是不是因为这个主题深入了,还是因为技术含量太高了,感觉大家参与的不积极,呵呵
楼下的继续! [quote]原帖由 <i>hobbs136</i> 于 2007-1-6 19:01 发表<br /><br />
<br />
<br /><br />
参看这篇文章,很简单,但是很好扩展<br /><br />
<a href="http://www.phpchina.com/bbs/thread-15486-1-2.html" target="_blank">http://www.phpchina.com/bbs/thread-15486-1-2.html</a> [/quote]<br /><br />
正在往这方面漂移,呵呵 面向对象设计原则:
单一职责
开放封闭
liskov替换
依赖倒置
接口隔离
……
[url=http://51cmm.csai.cn/OO/NO000006.htm]http://51cmm.csai.cn/OO/NO000006.htm[/url]
再加一句:测试驱动! :) :) 我来向大家学习!! 高内聚,低耦合。
:) php5的面向对象特征稍显正规了一点点。
但是距离使用面向对象设计方法进行设计还差的很远。前几天我试着写了一个数据库连接类(这个板块上有下载)当我想使用一些面向对象特征的时候发现语言根本没有给我提供这个机制,害的我不得不妥协,结果那个程序写的也就不完美了。
不过下面的几个方法是无论你做什么设计的时候都应该牢记的
开闭原则
职责单一原则。
就这两个吧,再多也没有用,PHP不支持嘛……
不过这两个原则说归说,但是非常不容易把握好。 [b]Information Expert(信息专家)
[/b]如果某个类能够在某方面具有完整的信息,足以实现某个责任,就将这个责任分配给这个类。
如:在购物车系统中,我们要让每个商品(Item)在购物车中蛤出现一次,如果相同的商品加入车中,我们只需增加商品的数量,而不是在购物车(ShoppingCar)中增加一个相同的商品。
根椐信息专家原则,Item类应该包括检测两件商品是否是同一件商品的责任。
[code]class Item
{
public equas($item)
{
//比较两个商品是否相同;
}
}[/code]
对于ShoppingCar类,它具有将相同商品数量加1的责任,所以应具有检测商品是否已经存在的责任。
[code]class ShoppingCar
{
private $_itemList;
public function addItem($item)
{
if(in_array($item, $_itemList)
updateItem($item);
else
array_push($_itemList, item);
}
}[/code] 关键在于面向对象的思考方式,很难做到。。
我正在尝试。。。。 使用异常 最近因为项目需要,搞了一个继承pdo的类
不过目前功能简单粗糙
也很希望多看到一些关于继承类的应用. 多级.
