PHP系列代码复用trait的构造函数使用

更新时间:2023-05-28 04:14:40 阅读: 评论:0

PHP系列代码复⽤trait的构造函数使⽤
在ThinkPHP5.1 框架中⾃⼰封装了⼀个 trait 类,每次都在控制器中使⽤,但是在使⽤框架⾃⾝的验证器类(框架控制器⽅法)报错
在控制器中使⽤⾃定义验证器
$param = $this->request->post();
$result = $this->validate($param, LiveValidate::class);
宝宝英语if (true !== $result) {
return respon_json(1, $result);
}
⽇志错误信息:
[ error ] [0]致命错误: Call to a member function validate() on null[/var/www//thinkphp/library/think/Controller.php:251] 以上错误就是由于应⽤了⾃
定义的  trait 类导致的,如果移除该 trait 类则不会报错,加⼊以后就会报错。、
原因分析:
为何调⽤不了⽗类的控制器⽅法。由于⾃定义 trait 类 没有继承框架的构架⽅法。
解决办法:
在trait 类的构架⽅法中,继承⽗类的构架⽅法,解决问题
测试案例
垫片英文基类控制器(模拟TP⾃带控制器)
class MyBaController
{
/**
* MyBaController constructor.
stay hungry
*/
public function __construct()
{
echo " MyBaController基类构架⽅法<br/>";
英语在线翻译软件
}
翻译器中文翻英文/**
* @desc: 基类-验证器
*/
public function validate()
{
echo "基类-验证器 <br/>";
}
}
⾃定义trait 类
trait MyTrait优秀教师发言稿
{
protected $var = "MyTrait_var";
/**
* MyTrait constructor.
*/
function __construct()
{
parent::__construct();resolution是什么意思
echo "MyTrait 构架⽅法 <br/>";
}
/**
* @desc: 添加
*/
function create()
{
echo "MyTrait create⽅法 <br/>";
}
}
控制器⼦类,继承控制器⽗类 MyBaController  class MyBaController
一对一在线教学{
/**
* MyBaController constructor.
*/
public function __construct()
{
echo " MyBaController基类构架⽅法<br/>";    }
/**
* @desc: 基类-验证器
*/
public function validate()
{
echo "基类-验证器 <br/>";
情人节翻译}
}
调⽤控制器⼦类
public function traitsDemo()
{
dcc
$obj = new MyController();
var_dump($obj->validate());
var_dump($obj->create());
var_dump($obj->hello());
}
打印结果
MyBaController基类构架⽅法MyTrait 构架⽅法
基类-验证器
MyTrait create⽅法MyController ⼦类 hello⽅法

本文发布于:2023-05-28 04:14:40,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/796968.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:控制器   验证   基类   框架   构架   继承
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图