php模拟一个简易的mvc模型

mvc是生么?
mvc是软件设计的一种结构(即模型、视图、控制器)

本篇文章会通过一个简易的webapp来介绍mvc,目录结构如下:
mvcDemo
    index.php
    modules
        UserModule.php
        BlogModule.php
    views
        user
            userPage.php
        blog
            blogPage.php
    controllers
        UserController.php
BlogController.ph

在以上的目录结构中:
index.php
    【入口文件】是一个入口文件,是一个唯一让浏览器请求的脚步文件;
modules
    【模型】用于提供数据并保存数据
views
    【视图】用于提供界面的显示
controller
    【控制器】用于协调模型和视图
action控制器中定义的方法:

    【action】是控制其中定义的方法,浏览器直接请求,url中以参数的形式传递

以下在项目的创建过程中慢慢的来讲解mvc的工作模式,所有的过程都是在虚拟机环境下的centos6中完成的(该虚拟环境已经具备了lamp环境)


一、首先我们创建一个目录mvcDemo用于存放该项目:

二、接下来我们进入mvcDemo目录创建相应的文件和文件夹,如下:


以上视图我们创建了index.php入口文件;modules模型文件夹;views视图文件夹;controllers存放控制类的文件夹

三、进入controllers目录,创建一个UserController.php和BlogController.php,如下:


编辑UserController.php和BlogController.php;分别写入如下代码:

UserController.php:

<?php
class UserController{
        public function index(){
                echo '这是user控制器的index方法';
        }
}
BlogController.php:

<?php
class BlogController{
        public function index(){
                echo '这是博客控制器的index方法';
        }
}
四、返回上一级目录,编辑index.php,如下:

<?php
        //这是一个入口文件

        //这是一个控制器
        $c = $_GET['c'];       //用于获取url参数中传过来的,具体的哪一个控制器
        //包含控制器
        include './controllers/'.$c.'Controller.php';    //将参数拼接为我们要访导入的类

        //实例化一个对象
        $className = $c.'Controller';
        $controller = new $className();

        //访问方法名
        $m = $_GET['m'];        //用于获取url参数中传递过来的,具体要访问的哪一个方法
        $controller->$m();      //执行该方法,返回相应的数据或视图
保存后,访问url【server/mvcDemo/?c=User&m=index】,在我的电脑上访问返回如下结果, 注意【我的电脑IP地址为192.168.1.112;项目存放目录为mvcTest】




可以看我我们正常访问到了UserController类中的index方法。

在以上过程中我们已经通过了入口文件,访问到了我们模型中的方法,并返回了相应的数据,接下来我们要通过模型,返回相应的视图,展示给用户:

五、进入views目录,创建user和blog目录

六、进入user目录,创建一个index.php,并写下如下代码(一段简单的htm):

<html>
        <head>
                <title>user</title>
        </head>
        <body>
                <h1>this is user view</h1>
        </body>
</html>
七、接下来进入controllers目录,编辑我们创建好的UserController.php,加上如下代码,将我们的视图文件包含进来:

<?php
class UserController{
        public function index(){
                echo '这是user控制器的index方法';

                include './views/user/index.php';
        }
}

我们再次访问url【server/mvcDemo/?c=User&m=index】,显示如下:



可以看到我们刚才写的视图文件正常执行,并显示了

现在我们已经访问入口文件,通过模型,访问到了我们的视图

接下来我们要访问入口文件,通过模型,访问视图,并获取数据库中的数据(这里数据库中返回的数据,我们写假数据):

八、进入modules目录,创建一个文件UserModule.php,写入如下代码:

<?php
class UserModule{
        public function getData(){
                $data = '{result:{lilei:{age:25,sex:man},lili:{age:23,sex:woman}}';
                return $data;
        }
}
9、接下来我们编辑controllers目录下的UserController.php文件,让他调用UserModule.php
<?php
class UserController{
        public function index(){
                echo '这是user控制器的index方法';

                include './views/user/index.php';

                include './modules/UserModule.php';
                $umo = new UserModule();
                echo '<br/>';
                echo $umo->getData();
        }
}
再次访问url【server/mvcDemo/?c=User&m=index】,显示如下:


到此文章,一个简易的mvc实现就完成了。






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的 PHP MVC 框架的示例: 1. 首先,你需要创建一个名为 index.php 的文件,在其中定义常量和引入必要的文件: ```php <?php // 定义常量 define('APP_PATH', realpath(__DIR__) . '/'); define('CONTROLLER_PATH', APP_PATH . 'controllers/'); define('MODEL_PATH', APP_PATH . 'models/'); define('VIEW_PATH', APP_PATH . 'views/'); // 引入必要的文件 require_once(APP_PATH . 'core/Controller.php'); require_once(APP_PATH . 'core/Model.php'); require_once(APP_PATH . 'core/View.php'); ``` 2. 创建一个名为 Controller.php 的文件,并定义一个名为 Controller 的类,该类包含一个默认的 index 方法: ```php <?php class Controller { public function index() { echo 'Hello World!'; } } ``` 3. 创建一个名为 Model.php 的文件,并定义一个名为 Model 的类: ```php <?php class Model { // 在这里定义模型类的方法 } ``` 4. 创建一个名为 View.php 的文件,并定义一个名为 View 的类: ```php <?php class View { // 在这里定义视图类的方法 } ``` 5. 创建一个名为 routes.php 的文件,其中包含路由规则: ```php <?php $routes = array( '/' => 'Controller@index', '/about' => 'Controller@about', '/contact' => 'Controller@contact' ); ``` 6. 最后,在 index.php 文件中添加路由和控制器的代码: ```php <?php // 引入路由规则 require_once(APP_PATH . 'routes.php'); // 获取请求的 URL $request_url = $_SERVER['REQUEST_URI']; // 查找路由规则 foreach ($routes as $route => $controller_action) { // 如果请求的 URL 匹配路由规则 if ($route === $request_url) { // 解析控制器和方法名 list($controller_name, $action_name) = explode('@', $controller_action); // 创建控制器实例并调用方法 require_once(CONTROLLER_PATH . $controller_name . '.php'); $controller = new $controller_name; $controller->$action_name(); exit; } } // 如果没有匹配的路由规则,则显示 404 页面 http_response_code(404); echo 'Page not found'; ``` 以上就是一个简单的 PHP MVC 框架的示例。当然,这只是一个示例,实际的 MVC 框架需要更多的功能和更复杂的实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值