前言
貌似很多公司都转向了使用Yii2做项目开发~
当团队开发人员过多的时候,对接口的定义就成了困难,再说,命名本来就是个玄学的东西。
之前早就听说过面向接口开发,这几天就试了下,感觉还不错,分享出来,一起进步。
最佳实践
单独存放的文件夹
我把接口文件放在项目中的custominterface
中,再和相应控制器所在文件夹进行对应存放,保证项目的目录的存放合理
interface
namespace app\custominterface\v2; /** * Created by PhpStorm. * 尝试进行面向接口编程 * User: yu * Date: 16/3/18 * Time: 10:42 */ interface LinksInterface { /** * 列出这个订单下的全部链接 * @return mixed */ public function actionList(); /** * 添加一个链接 * @return mixed */ public function actionAdd(); /** * 审核 * @return mixed */ public function actionCheck(); /** * 删除自己的链接 * @return mixed */ public function actionDel(); /** * 这是一个测试的例子 * @return mixed */ public function actionTest(); }
通过接口定义方法名的方式,提高团队开发效率。
implements
class LinkController extends Controller implements LinksInterface{
注意的是,如果在LinkController
里没有对于的function,就会报错。
我用的IDE是PHPStrom,当implements了之后,会提示错误。
网络异常,图片无法展示
|
点击之后,会自动补全interface内的function,还有对应的注释。
完整的class
<?php namespace app\patch\v2\controllers; /** * Created by PhpStorm. * User: yu * Date: 16/3/21 * Time: 15:20 */ use Yii; use yii\web\Controller; use app\custominterface\v2\LinksInterface; class LinkController extends Controller implements LinksInterface{ /** * 列出这个订单下的全部链接 * @return mixed */ public function actionList() { // TODO: Implement actionList() method. } /** * 添加一个链接 * @return mixed */ public function actionAdd() { // TODO: Implement actionAdd() method. } /** * 审核 * @return mixed */ public function actionCheck() { // TODO: Implement actionCheck() method. } /** * 删除自己的链接 * @return mixed */ public function actionDel() { // TODO: Implement actionDel() method. } /** * 这是一个测试的例子 * @return mixed */ public function actionTest() { // TODO: Implement actionTest() method. } }
总结
在多人开发中,或者团队内的成员水平差距比较大的情况下,采用面向接口的方式,可以提高开发效率。