文档详情

【PHP面向对象技术】PHP 实现函数重载.pdf

发布:2017-08-24约2.11千字共2页下载文档
文本预览下载声明
战战地地 日日记记__LLAAMMPP兄兄弟弟连连 职职场场如如战战场场,,战战场场需需要要军军人人,,而而职职场场需需要要的的是是职职业业人人 !!战战地地 日日记记是是展展现现 LLAAMMPP兄兄弟弟连连新新兵兵 (( 生生、、社社会会人人))转转变变为为合合格格军军人人 ((职职业业人人))的的心心路路历历 程程,,记记录录连连队队 (( 习习))生生活活的的点点点点滴滴滴滴,,分分享享其其中中的的收收获获与与快快乐乐 !!提提升升 职职业业竞竞争争力力 【【PPHHPP面面向向对对象象技技术术】】PPHHPP 实实现现函函数数重重载载 2012-11-30 09:19 57人阅读 评论 (0) 收藏 举报 众所周知的,PHP是弱类型的动态语言,动态语言的动态表现在各个方面,变量类型动态,函数参数动态。动态参数 这个参数决定了 PHP不支持 (也不需要)支持函数重载。 (PS:函数重载可以看成是行为 (函数或操作符)的多态行为,重载的唯一要求就是不能产生多义性 (强类型语言表现 在同一行为的重 载的形参列表不能有两个 (或以上)完全相等的情况)。 为什么需要在PHP代码中出现限制这么多的重载嘞? 我对PHP是这样理解的:最初的PHP仅仅是作为一种解释脚本用来动态构建HTML页面,即是HTML页面与MYSQL连接的桥 梁。而最初的 脚本规模是不大的,在小规模的程序中,动态技术可以便捷的开发。但是,当程序处理越来越复杂,动态的弊病也 日益凸显动态 技术让开发迅速,却让代码测试调试变得艰难。在一个复杂的程序中,保持程序的健壮性是很重要的。有过项 目经 验的童鞋能够感觉 到 (你们是不是大部分时间在找bug,找完bug之后改bug。bug改完之后继续下一个bug)。静态语言的 好处就是快速的定位错误。 PHP6对强类型限制也增加了内容。。。。 PDO库的函数 PDO::query ()就是重载了 (没有读过PDO源码,不胡说它的实现。不过它的设计就是重载思想)。     我对其原型的猜测如下 class PDO {     public function query (){     //这里使用func_get_args()得到形参列表,利用该形参列表进行判断     //再调用相关的以下的私有方法     //这么处理的好处就是在下面的私有方法中,我们完全可以假定形参类型是已知的     //在这些private 函数中,我们不需要进行任何形参判断,可以十分舒服的写这些具体实现    函数     //这个self::query ()作为一个接口供外部调用,self::query ()的唯一 目标就是进行函数调度。    同时也实 现了程序的分离     // (我一直奉行一个函数只干一件事的编程方法,同时也认为将一个函数写出超过一屏是一种糟糕的编程习 惯)。         }     private function query_1(string);     private function query_2(string,int,int);     private function query_3(string,int,string,array);     private function query_4 (string,int,object); } 这么写的好处是对于private function query_ [1,2,3,4]这几个方法调试是非常方便的。至少我们保证了错误不是 由于变量类型等未知 因素引起的,我们可以花更多的时间测试函数过程。当然,也破坏了动态性。不过PHP 自己也在干这事,元芳都不会 怎么看的。 关于动态,我的个人看法是程序越来越复杂的时候,动态的优势越来越少,而弊病越来越严重。 我举这个例子是想要说明PHP是动态语言,但是也不是不可以有静态语言的解决方案。C/C++是静态语言,也不说明 他们不可以有动态技术。 让思维再开阔一点,你的代码将会更加优雅。 骚年们,为了优雅的代码而奋斗撒 ! 以上言论纯属个人胡说八道,不代表本人的立场,也不代表本人会持久的坚持以上观点, 1 以上言论纯属个人胡说八道,不代表本人的立场,也不代表本人会持久的坚持以上观点, 也不愿代替其他人的立场 后记:在该文写作之前,并没有开始 习EXTJS框架。现在知道了javascript可以变得和JAVA一样,ExtJS的设计和
显示全部
相似文档