实例演示一
学习目标
通过一个简单完整的MVC实例,了解控制器文件(Controller)、模型文件(Model)、视图文件(View)的所在的目录路径。更好地理解DoitPHP框架的开发规则。
创建数据表
- DROP TABLE IF EXISTS `users`;
- CREATE TABLE `users` (
- `user_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
- `user_name` varchar(16) NOT NULL,
- `user_age` tinyint(3) unsigned NOT NULL,
- `user_note` text NOT NULL,
- PRIMARY KEY (`user_id`)
- ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
- INSERT INTO `users` VALUES ('1', '刘川枫', '24', '一个篮球队员');
- INSERT INTO `users` VALUES ('2', '孙正义', '35', '一个普通人');
在mysql数据库中执行上面脚本,创建实例所需的数据表。然后在DoitPHP项目主配置文件(application.php)设置好数据库连接参数。
新建开发文件
利用DoitPHP Tools来创建控制器文件(Controller)、模型文件(Model)、视图文件(View)。
1、Controller文件路径:application/controllers/IndexController.php, 内容为:
- /**
- * DoitPHP 演示实例一
- *
- * @author tommy
- * @copyright Copyright (C) www.doitphp.com All rights reserved.
- * @version $Id: Index.php 1.0 2013-11-29 18:55:39Z tommy $
- * @package Controller
- * @since 1.0
- */
- class IndexController extends Controller {
- /**
- * 首页
- *
- * @access public
- * @return void
- */
- public function indexAction() {
- $userModel = $this->model('users');
- $userList = $userModel->findAll();
- $this->assign('list', $userList);
- $this->display();
- }
- }
2、Model文件路径:application/models/usersModel.php,内容为:
- /**
- * 用户信息操作(演示实例)
- *
- * @author tommy
- * @copyright Copyright (C) www.doitphp.com 2016 All rights reserved.
- * @version $Id: usersModel.php 1.0 2016-12-22 23:04:17Z tommy $
- * @package Model
- * @since 1.0
- */
- class usersModel extends Model {
- /**
- * 定义数据表主键
- *
- * @access protected
- * @return array
- */
- protected function primaryKey() {
- return 'user_id';
- }
- /**
- * 定义数据表字段信息
- *
- * @access protected
- * @return array
- */
- protected function tableFields() {
- return array('user_id', 'user_name', 'user_age', 'user_note');
- }
- /**
- * 定义数据表名称
- *
- * @access protected
- * @return array
- */
- protected function tableName() {
- return 'users';
- }
- }
3、视图文件路径为:application/views/index/index.php(视图文件为php), 内容为:
- <!doctype html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>DoitPHP管理后台</title>
- </head>
- <body>
- <table>
- <thead>
- <tr>
- <td>会员ID</td>
- <td>会员名称</td>
- <td>年龄</td>
- <td>备注</td>
- </tr>
- </thead>
- <tbody>
- <?php if(is_array($list)){ foreach($list as $rows){ ?>
- <tr>
- <td><?php echo $rows['user_id']; ?></td>
- <td><?php echo $rows['user_name']; ?></td>
- <td><?php echo $rows['user_age']; ?></td>
- <td><?php echo $rows['user_note']; ?></td>
- </tr>
- <?php } } ?>
- </tbody>
- </table>
- </body>
- </html>
4、运行:在浏览器地址栏里访问DoitPHP项目的入口文件。此时这里的实例网址为:localhost/demo/index.php。效果如下:
访问页面时若看到上图数据,说明运行是成功的。
视图文件路径的分析
DoitPHP框架所调用的视图文件路径,是根据当前所运行的Controller文件及其Action类方法所决定的。因为视图文件路径默认规则如下:1、视图文件必须放置于视图目录(application/views)之下的子目录中。2、子目录名为当前的Controller名称(开发规则:目录统一使用小写字母)。3、视图文件名为当前Action类方法名字(不包含视图扩展名)。例如:当前访问网址为:/index.php/member/list,由此网址可以分析出,当前Controller名为:member,当前Action类方法名为:list。所以访问此网址时,默认调用的视图文件路径为:application/views/memeber/list.php(姑且以为视图文件格式为php)。
注:有种情况特殊,即Controller命名中含有下划线("_"),由于DoitPHP框架的自动加载规则部分采用PSR-0协议。命名中的下划线在Controller文件的自动加载时,则认为是目录分割符。即文件存放于controllers目录的子目录里。举个例子:当前访问网址为:/index.php/vip_member/list,由此网址分析,当前Controller名为:vip_member,当前Action类方法名为:list。由于Controller命名中含有下划线,所以Controller文件的路径为:application/controllers/vip/MemberController.php。这种目录设计为的是便于文件管理,可以将与vip相关的Controller文件统一放在控制器目录(controllers)的子目录vip里。同样,为了便于对这些与vip相关的Controller文件所对应的所有视图文件的管理,也是统一放在视图目录(views)的子目录(vip)中,然后再依照上面的规则存放视图文件,视图文件路径比普通情况下的视图文件路径多一级子目录。视图子目录为:member(与控制器文件MemberController.php相对应,遵循PSR-0协议),视图文件名为list.php(和上面视图路径规则一样)。这样视图文件路径为:application/views/vip/member/list.php。
原文: http://www.doitphp.com/index/documentation/?articleid=28