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=Request::instance()->param('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