Laravel的Request怎么自动转换成对象
比如
// GET http://localhost/path?x=3
function test(Request $req)
{
$req->x; // <- 其实自动转换成了 /app/xxx/X 对象
}
// app/xxx/X.php
class X {
public $val;
public function __construct($value)
{
$this->val = $value;
}
}
补充描述:http://localhost/path?x=3
拿到x实际会是 一个指定对象。比如对象:
class amount
{
function __cons...($value);
function asInt(): return $this->value * 100;
function asDecimal(): return bcadd($this->value, 0, 2);
}
然后在控制器里拿$req->x
会直接取到 amount 这个对象
咩懂,
$req
本身就是一个对象啊,转个啥?楼主是想问
request
是怎么通过箭头->
拿到参数?我猜应该是
@66 要是这个问题的话,那直接看源码呗,很简单:
在初始化框架时,会实例化一个 $request 对象,此对象已将地址中
?
后的参数变为数组存储到query
属性中。当通过$request->x
以对象属性的方式访问字段时,由于 $request 对象中没有x
属性,php 语言的机制会自动调用__get()
魔术方法。__get()
方法中可以看到,通过query
属性中的键名来获取对应的值,如果query
属性中没有指定的键名,便会从路由中获取键名对应的值。举个例子,在路由文件
routes/web.php
中定义一个路由:访问这个
http://localhost/hello/LiamHao?age=18
路由:还是想知道 直接进行模型绑定的