首页 » PHP » thinkPHP5.0在php中的使用方法(一)

thinkPHP5.0在php中的使用方法(一)

原文 http://blog.csdn.net/qq_34989708/article/details/76602431

2017-08-03 10:20:05阅读(636)

一、访问路径的方式

在application\index\controller\index.php中添加如下方法,进新测试

function  test($a,$b){
    echo "test a 的值是$a,b的值是$b";
}
1、 Get模式
http://localhost:端口号/根目录/thinkPHP包文件目录/public/index.php/模块名/控制器名/操作方法名?参数一=值一&参数二=值二......

thinkPHP5.0在php中的<a href=使用方法(一)" src="http://img.blog.csdn.net/20170803084235636?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQ5ODk3MDg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title="">

2、 路径模式pathInfo

在操作方法中存在参数,在地址栏中写

http://localhost:端口号/根目录/thinkPHP包文件目录/public/index.php/模块名/控制器名/操作方法名/参数一/值一/参数二/值二......

thinkPHP5.0在php中的使用方法(一)

3、 兼容模式
http://localhost:端口号/根目录/thinkPHP包文件目录/public/index.php?s=模块名/控制器名/操作方法名/参数一/值一/参数二/值二......

thinkPHP5.0在php中的使用方法(一)

4、 重写模式—–通过URL重写隐藏入口文件

Apache的配置过程如下:
(1)httpd.conf配置文件中加载了mod_rewrite.so模块
(2)AllowOverride None 将None改为 All
(3)在应用入口文件同级目录添加.htaccess文件,内容如下:

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

若为phpstudy环境,将上面代码中的最后一句修改为

  RewriteRule ^(.*)$ index.php/$1 [L,E=PATH_INFO:$1]

(4)接下来就可以通过下面的方式访问了:
可以通过上面的前两种方式进行访问—-省略掉url中的入口文件index.php

thinkPHP5.0在php中的使用方法(一)

thinkPHP5.0在php中的使用方法(一)

二、 生成模块 1、手动代码添加模块

在thinkPHP5包目录下面的build.php文件中添加要加入的模块的设置代码,完全可以复制原文件中的demo示例代码,示例

// 定义test模块的自动生成 (按照实际定义的文件名生成)
'test'     => [
    '__file__'   => ['common.php'],
    '__dir__'    => ['behavior', 'controller', 'model', 'view'],
    'controller' => ['Index', 'Test', 'UserType'],
    'model'      => ['User', 'UserType'],
    'view'       => ['index/index'],
],

然后在在入口文件public/index.php中添加执行build.php文件的代码:

//生成新模块
$build = include '../build.php'; 
// 运行自动生成
 \think\Build::run($build);

直接运行入口文件,就会自动生成模块以及下面的文件,可在application文件夹下面查看生成的新模块,如下图中的test文件夹及其子文件

thinkPHP5.0在php中的使用方法(一)

2、命令行添加

若安装的是单一环境,需要在电脑的系统属性添加php文件的环境变量,否则cmd命令不能识别php命令,若定位到thinkPHP文件目录下,输入如下命令,执行成功即可

php think build --module test2

如下图:

thinkPHP5.0在php中的使用方法(一)

在application中查看,如下多了一个模板test2

thinkPHP5.0在php中的使用方法(一)

三、 通过控制器中的方法调用视图

视图文件一般都存放在application下面的模块文件下面的view文件夹下面,如果在controller文件夹下面有一个控制器文件index.php,那么index.php中方法里面所需要请求的所有模版文件就默认存放在view下面和控制器同名的文件夹index下面,新建自己的模版文件(thinkPHP5.0默认的是html文件)

1、 通过继承控制器父类的方法实现

相关代码如下

\think\Controller
Class xxxx extends Controller
{
  Function test(){
    //如果无参数,那么默认就会找和当前方法同名的模版文件,也即是test.html
    return  $this->fecth();
    //有参数情况如下:
    return $this->fecth(“模版文件名(不带后缀)”);
    }
}

thinkPHP5.0在php中的使用方法(一)

2、 直接使用thinkPHP5.0提供的助手函数来加载页面
//如果无参数,那么默认就会找和当前方法同名的模版文件,也即是test.html
return  view();
return   view([“模版名”]);

助手函数调用格式:

view(’[模板文件]’[‘模板变量(数组)’][,模板替换(数组)])
3、 display和fetch方法的区别

http://miao.blog/article/thinkphp-fetch-display
Fetch用来显示模版文件
Display在模版中输出一些内容(字符串格式)

四、 定义修改路由

URL地址里面的index模块怎么才能省略呢,默认的URL地址显得有点长,通过路由可简化URL访问。
定义路由规则后,原来的URL地址将会失效,变成非法请求。
修改应用目录application下面的route.php,添加路由规则

1、 自定义无参路由
//访问test模块下面的test控制器中的test方法
'a'=>"test/test/test",

访问的时候url:
修改路由之前:

http://localhost:port/项目根目录/thinkPHP的目录/public/index.php/test/ test / test

修改路由之后:

http://localhost:port/项目根目录/thinkPHP的目录/public/index.php/a

注:
特殊情况:控制器名称是由多个单词组成,使用驼峰命名法,例如UserType,正常访问index模块下面UserType控制器下面的test1方法,url的访问格式:

域名/项目根目录/thinkPHP的/public/index.php/index/user_type/test1

定义路由规则:

"e"=>"test2/user_type/test1",

访问的时候:

域名/项目根目录/tp5的目录/public/index.php/e

但是原来的访问路径仍然有效!!!
注意事项:定义路由规则的时候,如果是给Index模块下定义,则路由中可以省略到模块名,例如:

 "h"=>"test/test4",

这表示会自动找Index模块下面的test控制器下的test4方法,如果是非Index模块,则需要完整的写完!

2、 必填参数路由
//必填参数为$j
'b/:j'=>"test/test/test2",

修改路由之前:

http://localhost:port/项目根目录/thinkPHP的目录/public/index.php/test/test/test2/j/1

修改路由之后:

http://localhost:port/项目根目录/thinkPHP的目录/public/index.php/j/参数值
3、 可选参数路由
//可选参数为$k
'c/[:k]'=>"test/test/test3"

修改路由之前:

http://localhost:port/项目根目录/thinkPHP的目录/public/index.php/test/test/test3【/k/参数值】

修改路由之后:

http://localhost:port/项目根目录/thinkPHP的目录/public/index.php/k【/参数值】
4、 多个参数路由

控制器中的方法有多个参数,设置路由实例(假设index2方法有两个参数id和name):

  "g/:id/:name"=>"test2/index/index2",

访问的模式:

域名/项目根目录/thinkPHP的目录/public/index.php/g/参数一的值/参数二的值
5、 动态更改路由

(1)使用Url::build()

Url::build('控制器名称/方法名', 【'参数名=值'】);

(2)使用助手函数:url():

url('控制器名称/方法名', 【'参数名=值'】);

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹