2013-08-06 44 views
0

我最近將我的2.x CodeIgniter應用程序升級到3.0的RC。我的本地機器上的一切運行良好。CodeIgniter:調用一個非對象的成員函數contents()

但是,當我把它扔了一個遠程服務器上,當我嘗試撥打:

$this -> cart -> contents(); 

我得到這個錯誤:

PHP Fatal error: Call to a member function contents() on a non-object in ... 

如果我

var_dump($this->cart) 

我本地機器我得到預期的購物車對象返回,但返回相同

NULL 

在我的遠程服務器上運行時。

我也有車一個擴展類,這僅僅是這樣的:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
class MY_Cart extends CI_Cart 
{ 
    function __construct() 
    { 
     parent::__construct(); 
     $this->product_name_rules = '\d\D'; 
     $this->product_id_rules = '\d\D'; 
    } 
} 

如果我刪除MY_Cart.php文件(上面的代碼),從我的庫文件夾中,我會得到相同的 呼叫到會員函數內容()在我在遠程服務器上執行的非對象上。爲什麼刪除自己的購物車擴展程序會導致購物車對象不再存在?

任何關於什麼可能會導致此行爲的見解,我試過在CodeIgniter論壇上詢問沒有運氣。

我的本地機器和遠程服務器都運行PHP 5.4.17。

這裏是一個堆棧跟蹤:

"…bss_web/public/development.bluesea.com/public/application/controllers/ 
cart.php (32) in Cart::add called at ? (?)" 



//increment quantity by 1 if PN is already in cart 
$qty = 1; 
$items = $this->cart->contents(); //line 32 
foreach ($items as $key => $item) { 
    if ($item['id'] == $pid) { 
     $qty = $item['qty'] + 1; 
    } 
} 

...家用/ bss_web /公/ development.bluesea.com /公/系統/核心/ CodeIgniter.php(356)

/* 
* ------------------------------------------------------ 
* Call the requested method 
* ------------------------------------------------------ 
*/ 

call_user_func_array(array(&$CI, $method), $params); // Line 356 

...稱爲在/home/bss_web/public/development.bluesea.com/public/ e_once 的index.php(312)

/* 
* -------------------------------------------------------------------- 
* LOAD THE BOOTSTRAP FILE 
* -------------------------------------------------------------------- 
* 
* And away we go... 
*/ 
require_once BASEPATH.'core/CodeIgniter.php'; //line 312 

編輯:我發現如果我重命名我的控制器,這是失敗的,以'除了'購物車'(它目前是)這似乎工作。不應該CodeIgniter避免這種衝突?或者爲什麼這隻會在我的遠程機器上發生衝突?

+0

確保您正在加載購物車庫或者在您的控制器或config/autoload.php –

+0

它是自動加載。這就是爲什麼它在本地工作的原因,我也試圖在控制器方法中加載庫,兩者都返回相同的非對象錯誤 – nick

回答

0
function __construct() { 
     parent::__construct(); 
     $this->load->library('cart'); 
} 
+0

我假設你的意思是把它放在MY_cart中 無法在那裏調用該類:'PHP致命錯誤:在'中的非對象上調用成員函數庫()。 我是'自動加載'購物車庫,我也嘗試加載之前,我打電話$ this-> cart->內容,都返回相同的非對象錯誤。 – nick

相關問題