ThinkPHP之MVC与URL访问

Posted 被罚站的树

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkPHP之MVC与URL访问相关的知识,希望对你有一定的参考价值。

一、初探


 

我们在apache的www目录下创建一个文件夹,其命名为我们的应用名。然后通过入口文件生成我们的应用。

当我们用ThinkPHP创建好一个应用后,其目录结果如下所示

那么我们如何来访问我们应用中的模块呢?其规则如下

http://serverName/applicationName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...]

比如访问应用CloudCrypt应用下的Home模块的方式如下

http://localhost/CloudCrypt/index.php/Home/Index/index

其返回结果图所示

 

二、controller


 

  在上面的目录结构中我们可以看到Home模块下有个controller文件夹,这就对应我们MVC中的C了。一般所有的请求都需要经过控制器,而我们编写的控制器都放在该文件夹下。默认的控制器是IndexController.class.php

<?php
namespace Home\\Controller;
use Think\\Controller;
class IndexController extends Controller {
    public function index(){
        $this->show(\'<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微软雅黑"; color: #333;font-size:24px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px } a,a:hover{color:blue;}</style><div style="padding: 24px 48px;"> <h1>:)</h1><p>欢迎使用 <b>ThinkPHP</b>!</p><br/>版本 V{$Think.version}</div><script type="text/javascript" src="http://ad.topthink.com/Public/static/client.js"></script><thinkad id="ad_55e75dfae343f5a1"></thinkad><script type="text/javascript" src="http://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script>\',\'utf-8\');
    }
}

 我们访问就这个控制器下的index方法,这同时也给我提供一个控制器编写规范,当我们需要添加控制器时就直接在该文件夹下创建一个nameController.class.php。然后在里面仿照上面的方式来写我们的方法。

三、添加方法


我们为IndexController.class.php添加一个sayHello方法。

<?php
namespace Home\\Controller;
use Think\\Controller;
class IndexController extends Controller {
    public function index(){
      ..........
    }

    public function sayHello(){
        $this->show(\'<h1>你好!</h1>\'.$_GET[\'username\']);
    }
}

通过浏览器访问

  • PATHINFO模式

  

  • 传统方式

  

常用的访问方式是PATHINFO方式,当然还有其它的方式,详见戳我

 

以上是关于ThinkPHP之MVC与URL访问的主要内容,如果未能解决你的问题,请参考以下文章

MVC架构网站URL访问原理及伪静态的区分

thinkphp5.0架构总览

ThinkPHP之MVC简析

ThinkPHP 3.2.3架构之多层MVC

ThinkPHP 怎样让URL访问的时候省略 index.php

thinkPHP入门之二