tp5、小程序学习总结

一、.配置虚拟域名简化URL路径

1.\Apache\conf\extra\httpd-vhosts.conf

增加:

#<VirtualHost *:80>  
#    DocumentRoot "E:\phpstudy\WWW\zerg\public"
#    ServerName z.cn
#</VirtualHost>

2.之后配置:

C:\WINDOWS\system32\drivers\etc\hosts

增加:

127.0.0.1       z.cn

3.再次修改\Apache\conf\extra\httpd-vhosts.conf

添加:

#<VirtualHost *:80>  
#    DocumentRoot "E:\phpstudy\WWW"
#    ServerName localhost
#</VirtualHost>

重启Apache

二、tp5URL访问路由

application\route.php

例如删除原来的 增加:

use think\Route;
Route::rule('hello','sample/Test/hello');

Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)',‘变量规则(数组)’');

请求类型:GET,POST,DELETE,PUT

Route::rule('hello','sample/Test/hello','GET',['https'=>true]);

Route::rule('hello','sample/Test/hello','GET|POST',['https'=>false]);

Route::get('hello','sample/Test/hello');

Route::post('hello','sample/Test/hello');

Route::any('hello','sample/Test/hello');

获取请求参数三种方法:

1.路由页面代码: Route::get('hello/:id','sample/Test/hello');

test页面代码:

1 <?php
2 namespace app\sample\controller;
3 class Test{
4     public function hello($id,$name){
5         echo $id;//123
6         echo '|';
7         echo $name;//nihao
8     }
9 }

网址:z.cn/hello/123?name=nihao

通过postman测试

Route::post('hello/:id','sample/Test/hello');

 1 <?php
 2 namespace app\sample\controller;
 3 class Test{
 4     public function hello($id,$name,$age){
 5         echo $id;
 6         echo '|';
 7         echo $name;
 8         echo '|';
 9         echo $age;
10     }
11 }

通过postman测试 选择post 网址:z.cn/hello/123?name=nihao 第三个$age参数通过设置key->value输入

2.Reques方法

 1 <?php
 2 namespace app\sample\controller;
 3 use think\Request;//需要引入Request
 4 class Test{
 5     public function hello(){
 6         $id');
 7         $name=Request::instance()->param('name');
 8         $age=Request::instance()->param('age');
 9         echo $id;
10         echo $name;
11         echo $age;        
12     }
13 }

可以获取任意请求类型的数据

通过postman测试 网址:z.cn/hello/123?name=nihao 第三个$age参数通过设置key->value输入

$all=Request::instance()->param();//结果:得到数组包括(id,name,age)
var_dump($all);
$all=Request::instance()->get();//结果:name的值
var_dump($all);
$all=Request::instance()->route();//结果:id的值
var_dump($all);
$all=Request::instance()->post();//结果:age的值
var_dump($all);

3.input方法

1 class Test{
2     public function hello(){
3     $all=input('param');
4     var_dump($all);
5     $age=input('param.age');
6     var_dump($age);          
7     }
8 }

另外的技巧:

1 <?php
2 namespace app\sample\controller;
3 use think\Request;//需要引入Request
4 class Test{
5     public function hello(Request $request){
6          $all=$request->param();
7          var_dump($all);
8     }
9 }

基础知识:

01、新版的控制器输出采用Response类统一处理,而不是直接在控制器中进行输出,通过设置default_return_type就可

以自动进行数据转换处理,一般来说,你只需要在控制器中返回字符串或者数组即可,例如如果我们配置:

'default_return_type'=>'json'

02、fetchSql用于直接返回SQL而不是执行查询,适用于任何的CURD操作方法。 例如:

$result = Db::table('think_user')->fetchSql(true)->find(1);

03、index方法用于数据集的强制索引操作,例如:

Db::table('think_user')->index('user')->select();

对查询强制使用user索引,user必须是数据表实际创建的索引名称。

04、相互关联的两个表:

有外键的表 关联另外一个 用belongTo ; 没有外键的表,关联另外一个用hasOne