Thinkphp 出现 Call to a member function assign() on a non-object

Call to a member function assign() on a non-object

今天在做东西时遇到了这个问题,调了好久才发现,原来是这样!

出现这个问题的原因是:

我有一个构造函数,但是在这个构造函数中没有调用parent::__construct(); 来实例化父类。

源代码:

开始:

<span style="font-size:18px;">public function __construct(){
		$this->systemService = new SystemService();
	}</span>
报错截图:

加上后:

<span style="font-size:18px;"><span style="color:#333333;">public function __construct(){
		</span><span style="color:#ff0000;">parent::__construct();</span><span style="color:#333333;">
		$this->systemService = new SystemService();
	}</span></span>
这样就好了!~~大家一定要注意啊!~~

简单分析下原因:

我们进入ThinkPHP\Library\Think\Controller.class.php,看到其构造器中有这么一段代码:

//实例化视图类
        $this->view     = Think::instance('Think\View');
然后我们再看报错的122 行,代码是这样:
$this->view->assign($name,$value);
看到这里相信你已经知道原因了吧!~~就是说,如果我们自己有构造函数,而没有调用父类构造函数,对父类进行实例化,那么$this->view 就是空的,没有模版实例,所以我们调用 assign ,就相当于 用 null->assign,就会出现我们看到的错误啦!~~

以后可要注意喽!~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值