一、MVC
M Model 模型:处理数据库的信息的
V View 视图层实现显示的
C Controller 控制器 司令:命令模型层处理数据;命令视图层显示数据
优势:
因为之前处理数据的和负责业务逻辑的写在一个PHP文件里面,如果项目做大的话,就会特复杂,所以我们可以把负责处理数据的和显示数据的,php业务逻辑的分开写,各司其职,提高效率
Ecshop php 的代码和html相分离然后用include连接
Smarty 模板引擎-------就是将php html 分离,分配数据,显示模板内容
1,model 处理数据的,原则是:
每一张数据表对应一个模型,例如,需要操作user数据表,在model里面就应该有userModel这个文件
2,我们要结合smarty作为视图层,构建这个MVC框架
①,前台的文件放在根目录下;后台的文件放在 /admin目录下
②,既然php和html相分离了,那么前台需要模板目录,后台也需要模板目录
③,前台和后台都需要图片和样式表,所以都要有images css 目录
④,再创建一个被公共加载的目录,例如此目录包含图片的处理类,分页类(helpers文件)
⑤,创建data目录存放缓存文件
通过地址栏传递不同的参数,控制器类中定义不同的方法,通过act参数实现控制器调用不同方法
用户访问网站无非就是增删改查-----我们通过传递不同的参数,实现不同的功能
3,searchAction
我们将控制器所做的所有的动作,定义为一个函数,统一xxxAction
例如用户传递c=goods&a=search
代表调用goodsController控制器的searchAction方法
,4,Model:
通常我们针对每个数据表,建立一个相对的操作数据的文件,采用面向对象的思想编写这个文件,每个表见一个类
在项目中创建一个models目录,用来放置操作数据库的文件,我们采用面向对象的思想编写这个文件(类)
由于每个操作数据表的文件,都需要连接数据库,因此我们再次将链接数据库的文件提取出来,让其他操作数据库的对象继承
基类模型 baseMode.class.php
基类控制器baseController.class.php
由于每次都要连接数据库,我将链接数据库的代码提取出来,生成一个类,
一般这个公用的模型叫做基类模型()
5,面向对象特性:
①继承(通过继承可以获得不同类的属性和方法)
②,封装(类库),将公共部分封装一个类
③,多态
继承:子类会继承父类的属性和方法,如果子类有构造函数,子类使用自己的构造函数,如果没有使用父类的构造函数(__construct)
类的属性:
Public 公有的(类的其他成员可以直接访问)
Private 私有的(只有当前类的对象可以访问)
Protected 受保护的(继承之后的对象可以访问)
6,现在由于每个类,相对于index.php,因为他最终被index.php加载进去的,如果加载的文件过多的话,相对路径会非常复杂,但是绝对路径(根目录)不变的
优化方案:
因为所有的文件都要先经过入口文件,所以我的思路就是在入口(index.php)文件,定义常量(保存网站的根目录)
常量:
①,常量定义:一般大写;
②,常量的作用域是全局的不用考虑的作用域范围,
③,在脚本运行期间,常量的值不变
如何定义:
Define(),参数1,常量名;参数2,常量值
获得网站的根目录:
通过系统内置的常量__FILE__获得