@Chiang
2020-04-12T15:50:23.000000Z
字数 3041
阅读 625
doitphp
2020-04
项目目录命名全部为小写.
数据库中数据表的命名将全部采用小写字母.
class IndexController extends Controller {
public function indexAction()
{
echo 'hello world';
}
}
- 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网址通常都是小写字母)。所以这个例子的代码为:
class IndexController extends Controller {
public function helloworldAction() {
}
}
注:在class IndexController里如果不是用来URL所调用的类方法(function),命名规则就非常随意了,可以后面不加Action(注:不是可以不加Action,是绝不能加!加了程序虽不报错,可规则上不允许。只有被URL调用的类方法才可以加Action,为的是保护这些非URL调用的类方法的代码安全)。非URL调用的类方法访问权限建议不要使用public应该使用protected。
- 上面的控制器(Controller)文件开发规则,只适用于controllers目录下(非子目录)的控制器文件。对于controllers子目录下的控制器文件,文件命名规则略有不同。控制器类的命名中下划线("_"),则代表文件路径分割符("/")。举例说明下:控制器类名:Admin_membersController,则此控制器文件在admin子目录下,文件名为MembersController.php,文件内容和则和上面规则一样。
行为标签:不难发现从上面控制器文件开发规则(文件命命名、控制器类命名、类方法命名)中,有几个关键词反复出现:Controller, Action。我们把这些旗帜鲜明表现出文件(或类)属性或类别的这些关键词统称为:行为标签。后面的内容中将会遇到更多的行为标签。
模型(Model)文件的开发规则类似于控制器(Controller)文件的开发规则。只是把Controller换成Model的区别,读者最好参考上文控制器(Controller)文件的开发规则来理解。
- Model文件命名采用驼峰命名法则,较之控制器(Controller)类的命名,模型(Model)类的命名中可以含有大写字母,也无需首字母大写。
- Model文件内容类的名字和文件名要一致。
例:要建一个新Model文件,假设为postList的model文件。文件名字为:postListModel.php内容为:
class postListModel extends Model {
}
- 模型(Model)类方法命名较之于控制器(Controller)类方法命名,无需加行为标签Action,命名规则比较灵活,随心所欲。
注:模型(Model)文件也可以放在模型目录(models)子目录里,只是不建议使用。其具体规则,可以参照上文控制器(Controller)子目录文件开发规则,自己尝试探索一下。
挂件(Widget)文件的开发规则也是和上文控制器(Controller)文件的开发规则极为类似,请参考前面所讲述过的控制器(Controller)文件的开发规则。先来个例子,上代码。
class mainMenuWidget extends Widget {
public function renderContent($params = null) {
}
}
- 挂件(Widget)文件命名建议采用驼峰命名法则,无需首字母大写(没有此类限制)。
- 挂件(Widget)文件内容类的名字和文件名要一致。
- 挂件(Widget)文件内容类中只有一个类方法:renderContent()。
Widget翻译为挂件(小部件),主要用来解决众页面共享某一功能(页面局部)。如网页头部的主菜单,页尾的版权信息等。一个widget只用来完成一个共享区域页面的处理,所以只需调用一个类方法renderContent()。
扩展模块(extensions)作为调用第三方程序来实现某功能,自然不是单独一个文件,是众文件的集合。所以需要在扩展目录中创建子目录。
下面以一个实例来说明一下具体的开发规则。假设要创建phpmailer的扩展,通过调用phpmailer这个第三方程序来实现邮件的发送。
- 在extensions目录中新建子目录:phpmailer。
- 在子目录phpmailer中创建扩展引导文件phpmailerExt.php(文件命名规则:在扩展模块名后加Ext)。内容如下:
class phpmailerExt extends Extension {
}
通过上面文件内容的代码不难看出,类名称和文件名一致(包括字母大小写),继承父类 Extension。
- 第三步,将第三方程序代码放置于子目录phpmailer中(具体路径,随你安排)。
- 第四步,开发扩展引导文件phpmailerExt.php,根据具体的业务需求,添加所需的类方法,总之,通过调用phpmailer这个第三方程序实现发送邮件功能。
- 待扩展模块phpmailer开发完毕后如何使用,对此后面文档会详细介绍。
对于应用目录(application)其子目录library里的类文件开发规则,仅仅只有文件名与类名要相同(包括字母大小写)。因为这样可以实现类文件的自动加载。否则要先进行文件引入,才能调用其代码。