[关闭]
@Chiang 2020-04-12T15:50:23.000000Z 字数 3041 阅读 625

开发规范

doitphp 2020-04


项目目录命名规则

项目目录命名全部为小写.

数据表命名规则

数据库中数据表的命名将全部采用小写字母.

控制器(Controller)文件的开发规则

  1. class IndexController extends Controller {
  2. public function indexAction()
  3. {
  4. echo 'hello world';
  5. }
  6. }
  • Controller文件的命名采用驼峰命名法则.如建立index的controller文件,
    其名字为IndexController.php
    注:index首字母要大写,后再加上Controller,注意这个Controller也是首字母大写的。之所以加controller是因为便于表明这个文件是controller文件。
  • Controller文件名字和内容中类的名字相同(字母大小写也一致的相同)。如上面代码所示,IndexController.php的内容类的名字按照此规应为:IndexController。
  • 这里之所以继承Controller是因为Controller 类中有好多常用的类方法。在这里继承下来(extends Controller),是为了便于在接下来的开发中使用这些类方法。
  • Controller文件内容中的function(类方法),只有用于URL所调用的function其名字后加上Action(注:首字母要大写)。
    如网址:http://www.doitphp.com/index.php/index/helloworld (http://www.doitphp.com/ 为doitphp项目目录的访问网址, 注:关于URL的路由规则此后有详细的讲述)中所调用的controller为IndexController,所调用的action为:helloworldAction。注意的是:这里的helloworld要全部为小写(在方法命名上则不遵守驼峰命名法则。原因:为了和URL保持一致,URL网址通常都是小写字母)。所以这个例子的代码为:
  1. class IndexController extends Controller {
  2. public function helloworldAction() {
  3. }
  4. }

注:在class IndexController里如果不是用来URL所调用的类方法(function),命名规则就非常随意了,可以后面不加Action(注:不是可以不加Action,是绝不能加!加了程序虽不报错,可规则上不允许。只有被URL调用的类方法才可以加Action,为的是保护这些非URL调用的类方法的代码安全)。非URL调用的类方法访问权限建议不要使用public应该使用protected。

  • 上面的控制器(Controller)文件开发规则,只适用于controllers目录下(非子目录)的控制器文件。对于controllers子目录下的控制器文件,文件命名规则略有不同。控制器类的命名中下划线("_"),则代表文件路径分割符("/")。举例说明下:控制器类名:Admin_membersController,则此控制器文件在admin子目录下,文件名为MembersController.php,文件内容和则和上面规则一样。
    行为标签:不难发现从上面控制器文件开发规则(文件命命名、控制器类命名、类方法命名)中,有几个关键词反复出现:Controller, Action。我们把这些旗帜鲜明表现出文件(或类)属性或类别的这些关键词统称为:行为标签。后面的内容中将会遇到更多的行为标签。

模型(Model)文件的开发规则

模型(Model)文件的开发规则类似于控制器(Controller)文件的开发规则。只是把Controller换成Model的区别,读者最好参考上文控制器(Controller)文件的开发规则来理解。

  • Model文件命名采用驼峰命名法则,较之控制器(Controller)类的命名,模型(Model)类的命名中可以含有大写字母,也无需首字母大写。
  • Model文件内容类的名字和文件名要一致。
    例:要建一个新Model文件,假设为postList的model文件。文件名字为:postListModel.php内容为:
  1. class postListModel extends Model {
  2. }
  • 模型(Model)类方法命名较之于控制器(Controller)类方法命名,无需加行为标签Action,命名规则比较灵活,随心所欲。
    注:模型(Model)文件也可以放在模型目录(models)子目录里,只是不建议使用。其具体规则,可以参照上文控制器(Controller)子目录文件开发规则,自己尝试探索一下。

挂件(Widget)文件的开发规则

挂件(Widget)文件的开发规则也是和上文控制器(Controller)文件的开发规则极为类似,请参考前面所讲述过的控制器(Controller)文件的开发规则。先来个例子,上代码。

  1. class mainMenuWidget extends Widget {
  2. public function renderContent($params = null) {
  3. }
  4. }
  • 挂件(Widget)文件命名建议采用驼峰命名法则,无需首字母大写(没有此类限制)。
  • 挂件(Widget)文件内容类的名字和文件名要一致。
  • 挂件(Widget)文件内容类中只有一个类方法:renderContent()。
    Widget翻译为挂件(小部件),主要用来解决众页面共享某一功能(页面局部)。如网页头部的主菜单,页尾的版权信息等。一个widget只用来完成一个共享区域页面的处理,所以只需调用一个类方法renderContent()。

扩展模块(extensions)开发规则

扩展模块(extensions)作为调用第三方程序来实现某功能,自然不是单独一个文件,是众文件的集合。所以需要在扩展目录中创建子目录。

下面以一个实例来说明一下具体的开发规则。假设要创建phpmailer的扩展,通过调用phpmailer这个第三方程序来实现邮件的发送。

  • 在extensions目录中新建子目录:phpmailer。
  • 在子目录phpmailer中创建扩展引导文件phpmailerExt.php(文件命名规则:在扩展模块名后加Ext)。内容如下:
  1. class phpmailerExt extends Extension {
  2. }

通过上面文件内容的代码不难看出,类名称和文件名一致(包括字母大小写),继承父类 Extension。

  • 第三步,将第三方程序代码放置于子目录phpmailer中(具体路径,随你安排)。
  • 第四步,开发扩展引导文件phpmailerExt.php,根据具体的业务需求,添加所需的类方法,总之,通过调用phpmailer这个第三方程序实现发送邮件功能。
  • 待扩展模块phpmailer开发完毕后如何使用,对此后面文档会详细介绍。

类文件(library)开发规则

对于应用目录(application)其子目录library里的类文件开发规则,仅仅只有文件名与类名要相同(包括字母大小写)。因为这样可以实现类文件的自动加载。否则要先进行文件引入,才能调用其代码。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注