1. 程式人生 > >Thinkphp 出現 Call to a member function assign() on a non-object

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,就會出現我們看到的錯誤啦!~~

以後可要注意嘍!~~~