网站建设PHP中接口的讨论

很多人都问我, 网站建设PHP的接口有什么用?什么时候用?什么地方用?
首先我们来看什么是接口?
接口不是类,和类相似。主要用来描述类具体有什么功能(方法),但并不实现具体的功能,只起定义作用,具体功能由实现接口的类实现(implement),一个类可以实现一个或多个接口。
一般的动态语言都没有接口,但是PHP5中有,在PHP中定义接口:
Java代码   收藏代码
  1. interface User {  
  2.     public function eat();  
  3.     public function sleep();  
  4. }  

实现接口:
Java代码   收藏代码
  1. class Chinese implements User {  
  2.     public function eat() {  
  3.     echo "eat chinese food!";  
  4.     }  
  5.     public function sleep() {  
  6.     echo "sleep..."  
  7.     }  
  8. }  


上面的代码在PHP编程中到底有什么意义呢?从实践的角度出发,PHP中接口的作用几乎为0,完全是鸡肋,上面的代码我们不定义接口,直接定义一 个Chinese类也可以正常的工作,完全没有任何问题。目前PHP5中的接口,顶多只能用作类型提示,仅此一用而已。当然,类型提示可以让我们的某些设 计更为清晰。

我们来看看怎样利用接口来完成类型提示(其实意义并不大)。

Java代码   收藏代码
  1. public function doSomething($user) {  
  2.     $user->eat();  
  3. }  


假如方法doSomething()需要传递一个User对象的实例,有可能使用这个方法的用户并不清楚$user是User对象的实例,所以有可能将代码写成下面这样:

Java代码   收藏代码
  1. $user = "bing.peng";  
  2. $test->doSomething($user);  

那么当程序试图执行$user->eat()方法时,就会失败,因为用户并没有传入期望对象。我们来为doSomething()方法加入类型提示:
Java代码   收藏代码
  1. public function doSomething(User $user) {  
  2.     $user->eat();  
  3. }  

这样用户就可清晰的知道doSomething()需要的是User对象,从而避免一些低级的错误。但是由于PHP是动态语言,所以你还是可以乱写,如下:
Java代码   收藏代码
  1. $user = "bing.peng";  
  2. $test->doSomething($user);  

执行代码时,你还是会失败,类型提示的作用也没有多大的意义,所以实践中PHP接口的作用几乎为0,我们平白无故的还会多出一段接口定义代码,如果你将接口代码放到一个单独的文件中,那么打开这些文件还需要花费时间,尽管它很少。

顺便说下我个人对 网站建设PHP目前发展的一点小小的看法吧,PHP为了适应企业级开发,增加了很多面向对象的新特性,很多东西都是直接从Java中拿过 来,比如接口,但是动态语言中真的不太需要接口这东西;比如类型提示,其实用处并不大。现在的PHP越来越复杂化了,有点不伦不类了,逐渐的背离了人民群 众,要知道PHP能成为web开发第一语言,主要原因就是在于草根、简单,希望PHP的发展能越来越好。(fblww-0313)

转载于:https://my.oschina.net/u/224509/blog/48957

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值