研发大型PHP项目的方法
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-05-24
g(); // x=3 and y=5 $obj=new something(8); // x=8 and y=5 $obj=new something(8,9); // x=8 and y=9 缺省参数使用c++的方式,所以你不能忽略y的值,而给x一个缺省参数,参数是从左到右赋值的,如果 传入的参数少于需求的参数时,其作的将使用缺省参数。 当一个派生类的对象被创建时,只有他的构造函数被调用,父类的构造函数没被调用,如果你想调用基 类的构造函数,你必须要在派生类的构造函数中显示调用。能这样做是因为在派生类中所有父类的方法都 是可用的。 ----------------------------------------------------- <?php function another() { $this->y=5; $this->something(); //显示调用基类构造函数 } ?>--------------------------------------------------- oop的一个非常好的机制是使用抽象类。抽象类是不能实例化,只能提供给派生类一个接口。设计者通常 使用抽象类来强迫程式员从基类派生,这样能确保新的类包含一些期待的功能。在php中没有标准的方法, 不过: 如果你需要这个特性,能通过定义基类,并在他的构造函数后加上"die" 的调用,这样就能确保基 类是不可实例化的,目前在每一个方法(接口)后面加上"die" 语句,所以,如果一个程式员在派生类中没有 覆盖方法,将引发一个错误。而且因为php 是无类型的,你可能需要确认一个对象是来自于你的基类的派生 类,那么在基类中增加一个方法来实义类的身份(返回某种标识id),并且在你接收到一个对象参数时校验 这个值。当然,如果一个邪恶不好的程式员在派生类中覆盖了这个方法,这种方法就不起作用了,不过一般 问题多发目前懒惰的程式员身上,而不是邪恶的程式员。 当然,能够让基类对程式员无法看到是非常好的,只要将接口打印出来做他们的工作就能了。 在php中没有析构函数。 重载(和覆盖不同)在php中不支持。在oop中,你能重载一个方法来实现两个或重多的方法具有相同 的名字,不过有不同数量或类型的参数(这要看语言)。php 是一种松散类型的语言,所以通过类型重载不 起作用,然而通过参数的个数不同来重载也不起作用。 有时在oop中重载构造函数非常好,这样你能通过不同的方法创建对象(传递不同数量的参数)。在php 中实现他的技巧是: ----------------------------------------------------- <?php class myclass { function myclass() { $name="myclass".func_num_args(); $this->$name(); //注意$this->name()一般是错误的,不过在这里$name是个将被调用方法的名字 } function myclass1($x) { code; } function myclass2($x,$y) { code; } } ?>--------------------------------------------------- 通过在类中的额外的处理,使用这个类对用户是透明的: $obj1=new myclass(1); //将调用myclass1 $obj2=new myclass(1,2); //将调用myclass2 有时这个非常好用。 待续... |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: md5 结合 crypt =无敌密码下一篇: PHP程序员最易犯10种错误
关于研发大型PHP项目的方法的所有评论