1、项目分为PC端、移动端、和PC管理端,分为对应目录为 /Application/Home,/Application/Mobile,/Application/Admin;
对应入口文件为 index.php, mobile.php,admin.php,入口文件中设定绑定模块;
2、访问的URL为 “域名+项目文件夹名+入口文件+控制器+方法”,如“localhost/myprj/index.php/Index/index”;
3、服务器配置域名绑定到项目文件夹,省略项目文件名,服务器上URL为“www.myprj.com/index.php/Index/index”;
4、服务器上部署还可以启用URL的“REWRITE模式”,同时apache配置相应的域名对相应的入口文件,如 www.prj.com 到 index.php ,m.prj.com 到 mobile.php ,admin.prj.com 到 admin.php ,URL进一步缩写省去入口文件,如“www.myprj.com/Index/index”;
5、对于三个模块的关系,我规划的是 PC端为父类,移动端和管理端均继承于PC端;
1、配置文件 /Application/Common/Conf/config.php为公共配置文件,用于配置数据库信息、模板后缀名、自动开启Session、URL模式等全项目公用的配置信息;
2、/Application/Home(或Mobile或Admin)/Conf/config.php为模块配置文件,一般用于配置CSS、JS、图片目录,如下
<?php return array( //‘配置项‘=>‘配置值‘ ‘TMPL_PARSE_STRING‘=>array( ‘__CSS__‘ => __ROOT__.‘/Public/home/css‘, ‘__JS__‘ => __ROOT__.‘/Public/home/js‘, ‘__IMG__‘ => __ROOT__.‘/Public/home/image‘, ‘__PCSS__‘ => __ROOT__.‘/Public/pub/css‘, ‘__PJS__‘ => __ROOT__.‘/Public/pub/js‘, ‘__PIMG__‘ => __ROOT__.‘/Public/pub/image‘, ) );
备注1:在CSS中引用图片使用相对路径,如 body { background
: url("../image/bgimage.png") }
备注2:模板在包含文件时要使用<include file="..." />标签,使用<?php include ‘...‘; ?>等原生PHP函数会导致包含文件中的__APP__、__JS__ 等预定义不被渲染;
3、/Application/Common/Common/function.php为公共函数文件,用于保存公共函数,如 密码加密函数、表单过滤函数 等,这个文件会被自动调用不需要手动 require;
备注:为移植第三方接口(如微信支付、支付宝支付、OAuth登录)修改工作较少,我把这些第三方DEMO放到了 /Application/Common/Common 目录下,在function.php中编写函数调用相关的接口类和函数。
4、设定模板文件的后缀名为php,因为一些IDE对html后缀的文件不能智能优化显示其中的php代码,比如Dreamweaver和Notepad++。
1、由于项目并不复杂,TP中提供了可不必定义的Model类,而如果定义Model类会在多模块的继承中增加复杂度,所以项目中均无定义Model类;
2、控制器分为两大类,一类是专门负责模板渲染(assign和display),这里称为模板控制器;另一类是负责数据库操作和处理,这里称为数据控制器;
3、为便于对于模板的统一控制,仅 Index 控制器为模板控制器;由于PC版有用户中心一系列的模板,所以 UserCenter也是模板控制器;
4、所有的数据库操作原则上不允许存在于模板控制器(如 Index控制器)中,应该写在相应对象的数据控制器中;
5、Ajax返回写在数据控制器中,对于同时支持被其它控制器和Ajax操作的方法,使用 $isReturn=FALSE 可选参数来决定输出数据还是函数返回数据;
原文:http://www.cnblogs.com/batsing/p/4894197.html