路由
路由的作用是简化URL访问地址,并根据定义的路由类型做出正确的解析
路由的注册
路由一般写在route.php文件中
'test' =>'test/sql/url'
未注册前访问
注册后访问
url生成
俩种方式
Url::build('地址表达式','传递的参数','后缀','域名')
url('地址表达式','传递的参数','后缀','域名')
$url= Url::build('page','id=1','html',false);
public function url(){
$url= Url::build('page','id=1','html',false);
echo "<a href='$url'>跳转</a>";
}
控制器
控制器初始化
在运行前都会执行_initialize()方法,初始化方法名都为_initialize
public function _initialize()
{
echo 'init<br/>';
}
public function page()
{
//分页
$data[]=Db::name('testuser')->page(1,3)->select();
$data[]=Db::name('testuser')->page(2,3)->select();
return json($data);
// dump($data);
}
前置操作
当有前置操作时,会在运行代码前,现看有没有要执行的前置,前置操作的命名为
beforeActionList
protected $beforeActionList = [
'first',
'second' => ['except'=>'hello'],
'three' => ['only'=>'hello,data'],
];
public function first()
{
echo 'first<br/>';
}
protected function second()
{
echo 'second<br/>';
}
protected function three()
{
echo 'three<br/>';
}
public function hello()
{
return 'hello';
}
public function data()
{
return 'data';
}
跳转
public function index(){
$this->success('新增成功', 'jump');
}
public function jump(){
echo '跳转过来的';
}
重定向
redirect方法的参数用法和Url::build
方法的用法一致
public function jump(){
// echo '跳转过来的';
$this->redirect('http://www.baidu.com',302);
}
空操作
空操作是指系统在找不到指定的操作方法的时候,会定位到空操作(_empty
)方法来执行
public function _empty(){
echo '空';
}
请求
请求信息
public function request(){
$request = Request::instance();
// 获取当前域名
echo 'domain: ' . $request->domain() . '<br/>';
// 获取当前URL地址 不含域名
echo 'url: ' . $request->url() . '<br/>';
// 获取当前URL地址 不含QUERY_STRING
echo 'url without query: ' . $request->baseUrl() . '<br/>';
// 获取URL地址中的后缀信息
echo 'ext: ' . $request->ext() . '<br/>';
}
什么是QUERY_STRING,是路径后面跟的参数
请求类型
判断是什么请求类型时一般用is什么什么来判断
public function request(){
if (Request::instance()->isGet()) echo "当前为 GET 请求";
// 是否为 POST 请求
if (Request::instance()->isPost()) echo "当前为 POST 请求";
}
HTTP 请求头信息
public function request()
{
$info = Request::instance()->header();
echo $info['accept'];
echo $info['accept-encoding'];
echo $info['user-agent'];
}
依赖注入(控制反转)
ThinkPHP的依赖注入(也称之为控制反转)是一种较为轻量的实现,无需任何的配置,并且主要针对访问控制器进行依赖注入。可以在控制器的构造函数或者操作方法(指访问请求的方法)中类型声明任何(对象类型)依赖,这些依赖会被自动解析并注入到控制器实例或方法中。
namespace app\index\controller;
use think\Request;
class Index
{
protected $request;
public function __construct(Request $request)
{
$this->request = $request;
}
public function hello()
{
return 'Hello,' . $this->request->param('name') . '!';
}
}