实例演示一

学习目标

通过一个简单完整的MVC实例,了解控制器文件(Controller)、模型文件(Model)、视图文件(View)的所在的目录路径。更好地理解DoitPHP框架的开发规则。

创建数据表

  1. DROP TABLE IF EXISTS `users`;
  2. CREATE TABLE `users` (
  3. `user_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  4. `user_name` varchar(16) NOT NULL,
  5. `user_age` tinyint(3) unsigned NOT NULL,
  6. `user_note` text NOT NULL,
  7. PRIMARY KEY (`user_id`)
  8. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
  9.  
  10. INSERT INTO `users` VALUES ('1', '刘川枫', '24', '一个篮球队员');
  11. INSERT INTO `users` VALUES ('2', '孙正义', '35', '一个普通人');

在mysql数据库中执行上面脚本,创建实例所需的数据表。然后在DoitPHP项目主配置文件(application.php)设置好数据库连接参数。

新建开发文件

利用DoitPHP Tools来创建控制器文件(Controller)、模型文件(Model)、视图文件(View)。

1、Controller文件路径:application/controllers/IndexController.php, 内容为:

  1. /**
  2. * DoitPHP 演示实例一
  3. *
  4. * @author tommy
  5. * @copyright Copyright (C) www.doitphp.com All rights reserved.
  6. * @version $Id: Index.php 1.0 2013-11-29 18:55:39Z tommy $
  7. * @package Controller
  8. * @since 1.0
  9. */
  10.  
  11. class IndexController extends Controller {
  12.  
  13. /**
  14. * 首页
  15. *
  16. * @access public
  17. * @return void
  18. */
  19. public function indexAction() {
  20.  
  21. $userModel = $this->model('users');
  22. $userList = $userModel->findAll();
  23.  
  24. $this->assign('list', $userList);
  25.  
  26. $this->display();
  27. }
  28.  
  29. }

2、Model文件路径:application/models/usersModel.php,内容为:

  1. /**
  2. * 用户信息操作(演示实例)
  3. *
  4. * @author tommy
  5. * @copyright Copyright (C) www.doitphp.com 2016 All rights reserved.
  6. * @version $Id: usersModel.php 1.0 2016-12-22 23:04:17Z tommy $
  7. * @package Model
  8. * @since 1.0
  9. */
  10.  
  11. class usersModel extends Model {
  12.  
  13. /**
  14. * 定义数据表主键
  15. *
  16. * @access protected
  17. * @return array
  18. */
  19. protected function primaryKey() {
  20. return 'user_id';
  21. }
  22.  
  23. /**
  24. * 定义数据表字段信息
  25. *
  26. * @access protected
  27. * @return array
  28. */
  29. protected function tableFields() {
  30. return array('user_id', 'user_name', 'user_age', 'user_note');
  31. }
  32.  
  33. /**
  34. * 定义数据表名称
  35. *
  36. * @access protected
  37. * @return array
  38. */
  39. protected function tableName() {
  40. return 'users';
  41. }
  42.  
  43. }

3、视图文件路径为:application/views/index/index.php(视图文件为php), 内容为:

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>DoitPHP管理后台</title>
  6. </head>
  7.  
  8. <body>
  9.  
  10. <table>
  11. <thead>
  12. <tr>
  13. <td>会员ID</td>
  14. <td>会员名称</td>
  15. <td>年龄</td>
  16. <td>备注</td>
  17. </tr>
  18. </thead>
  19. <tbody>
  20. <?php if(is_array($list)){ foreach($list as $rows){ ?>
  21. <tr>
  22. <td><?php echo $rows['user_id']; ?></td>
  23. <td><?php echo $rows['user_name']; ?></td>
  24. <td><?php echo $rows['user_age']; ?></td>
  25. <td><?php echo $rows['user_note']; ?></td>
  26. </tr>
  27. <?php } } ?>
  28. </tbody>
  29. </table>
  30. </body>
  31. </html>

4、运行:在浏览器地址栏里访问DoitPHP项目的入口文件。此时这里的实例网址为:localhost/demo/index.php。效果如下:

实例演示一 - 图1

访问页面时若看到上图数据,说明运行是成功的。

视图文件路径的分析

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