https://www.kancloud.cn/thinkphp/thinkphp5_quickstart
测试与部署均在windows10下进行学习。
快速入门第三节
<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function hello($name = 'World')
{
// 获取当前URL地址 不含域名
echo 'url: ' . $this->request->url() . '<br/>';
return 'Hello,' . $name . '!';
}
}
访问界面并传递参数:http://127.0.0.1/index/index/hello/name/123,网页获取name值为123,输出了请求的url。
效果:
方法带入形参
<?php
namespace app\index\controller;
use think\Request;
class Index
{
public function hello(Request $request, $name = 'World')
{
// 获取当前URL地址 不含域名
echo 'url: ' . $request->url() . '<br/>';
return 'Hello,' . $name . '!';
}
}
系统提供的方法
<?php
namespace app\index\controller;
class Index
{
public function hello($name = 'World')
{
// 获取当前URL地址 不含域名
echo 'url: ' . request()->url() . '<br/>';
return 'Hello,' . $name . '!';
}
}
方便全局调用(未直接示例)
制作Base控制器:
<?php
namespace app\index\controller;
use app\index\model\User;
use think\Controller;
use think\Request;
use think\Session;
class Base extends Controller
{
public function _initialize()
{
$user = User::get(Session::get('user_id'));
Request::instance()->bind('user',$user);
}
}
其它控制器中调用:
<?php
namespace app\index\controller;
use app\index\controller\Base;
use think\Request;
class Index extends Base
{
public function index(Request $request)
{
echo $request->user->id;
echo $request->user->name;
}
}
<?php
namespace app\index\controller;
use think\Request;
class Index
{
public function hello(Request $request)
{
echo '请求参数:';
dump($request->param());
echo 'name:'.$request->param('name');
}
}
输入访问网址:http://127.0.0.1/index/index/hello/name/123/test/ddd
输出效果:
<?php
namespace app\index\controller;
class Index
{
public function hello()
{
echo '请求参数:';
dump(input());
echo 'name:'.input('name');
}
}
public function hello(Request $request)
{
echo 'name:'.$request->param('name','World','strtolower');
echo '<br/>test:'.$request->param('test','thinkphp','strtoupper');
}
<?php
namespace app\index\controller;
use think\Request;
class Index
{
public function hello(Request $request)
{
echo 'GET参数:';
dump($request->get());
echo 'GET参数:name';
dump($request->get('name'));
echo 'POST参数:name';
dump($request->post('name'));
echo 'cookie参数:name';
dump($request->cookie('name'));
echo '上传文件信息:image';
dump($request->file('image'));
}
}
<?php
namespace app\index\controller;
use think\Request;
class Index
{
public function hello(Request $request)
{
echo '请求方法:' . $request->method() . '<br/>';
echo '资源类型:' . $request->type() . '<br/>';
echo '访问IP:' . $request->ip() . '<br/>';
echo '是否AJax请求:' . var_export($request->isAjax(), true) . '<br/>';
echo '请求参数:';
dump($request->param());
echo '请求参数:仅包含name';
dump($request->only(['name']));
echo '请求参数:排除name';
dump($request->except(['name']));
}
}
<?php
namespace app\index\controller;
use think\Request;
class Index
{
public function hello(Request $request,$name = 'World')
{
// 获取当前域名
echo 'domain: ' . $request->domain() . '<br/>';
// 获取当前入口文件
echo 'file: ' . $request->baseFile() . '<br/>';
// 获取当前URL地址 不含域名
echo 'url: ' . $request->url() . '<br/>';
// 获取包含域名的完整URL地址
echo 'url with domain: ' . $request->url(true) . '<br/>';
// 获取当前URL地址 不含QUERY_STRING
echo 'url without query: ' . $request->baseUrl() . '<br/>';
// 获取URL访问的ROOT地址
echo 'root:' . $request->root() . '<br/>';
// 获取URL访问的ROOT地址
echo 'root with domain: ' . $request->root(true) . '<br/>';
// 获取URL地址中的PATH_INFO信息
echo 'pathinfo: ' . $request->pathinfo() . '<br/>';
// 获取URL地址中的PATH_INFO信息 不含后缀
echo 'pathinfo: ' . $request->path() . '<br/>';
// 获取URL地址中的后缀信息
echo 'ext: ' . $request->ext() . '<br/>';
return 'Hello,' . $name . '!';
}
}
public function hello(Request $request, $name = 'World')
{
echo '模块:'.$request->module();
echo '<br/>控制器:'.$request->controller();
echo '<br/>操作:'.$request->action();
}
使用助手函数的示例:
<?php
namespace app\index\controller;
class Index
{
public function hello()
{
echo 'GET参数:';
dump(input('get.'));
echo 'GET参数:name';
dump(input('get.name'));
echo 'POST参数:name';
dump(input('post.name'));
echo 'cookie参数:name';
dump(input('cookie.name'));
echo '上传文件信息:image';
dump(input('file.image'));
}
}
修改默认输出类型:'default_return_type' => 'json',//或者为xml等(config.php)
然后设计如下控制器:
<?php
namespace app\index\controller;
class Index
{
public function hello()
{
$data = ['name' => 'thinkphp', 'status' => '1'];
return $data;
}
}
输出:
不需要配置config.php,直接建立如下控制器即可完成相同输出。
<?php
namespace app\index\controller;
class Index
{
public function hello()
{
$data = ['name' => 'thinkphp', 'status' => '1'];
return json($data);
}
}
也可以手动输出带状态返回码在内的其它信息的响应格式
<?php
namespace app\index\controller;
class Index
{
public function hello()
{
$data = ['name' => 'thinkphp', 'status' => '1'];
return json($data, 201, ['Cache-control' => 'no-cache,must-revalidate']);
}
}
<?php
namespace app\index\controller;
class Index
{
use \traits\controller\Jump;
public function index($name='')
{
if ('thinkphp' == $name)
{
$this->success('欢迎使用ThinkPHP5.0','hello');
}
else
{
$this->error('错误的name','guest');
}
}
public function hello()
{
return 'Hello,ThinkPHP!';
}
public function guest()
{
return 'Hello,Guest!';
}
}
以上代码引入的traits\controller\Jump,使用success和error,输出了表情、提示信息,然后3秒跳转到指定的方法。
在traits\controller\Jump中,页面重定向的方法为:
$this->redirect('http://thinkphp.cn');
直接重新定向到指定页面。
系统也提供了助手函数有同样效果:
redirect('http://thinkphp.cn')