如何实现类似Laravel的Request接口来获取HTML输入值?
PHP Request类实现:直接通过属性访问表单数据
需求说明
需要实现一个Request类,让控制器方法可以通过$request->inputname的方式,直接获取HTML表单中对应name属性的输入值。
HTML表单示例
<input name="inputname"> <input name="anotherinputname">
Request类实现代码
class Request { // 存储合并后的请求数据 private $data; public function __construct() { // 合并GET与POST数据,POST数据优先级高于GET $this->data = array_merge($_GET, $_POST); } // 魔术方法:访问不存在的属性时自动触发 public function __get($name) { // 存在对应键则返回值,否则返回null return $this->data[$name] ?? null; } }
控制器代码示例
public function create(Request $request) { echo $request->inputname; echo $request->anotherinputname; }
关键逻辑说明
- 构造方法里合并了
$_GET和$_POST的请求数据,确保两种提交方式的表单值都能被获取,且POST提交的同名数据会覆盖GET数据。 __get魔术方法是核心:当你尝试访问$request对象中未定义的属性(比如$request->inputname)时,PHP会自动调用这个方法,从预存的请求数据里匹配对应键名的值返回,找不到则返回null。
内容的提问来源于stack exchange,提问作者KATHEESKUMAR
相关产品推荐
相关产品推荐

