2012-04-11 70 views
2

大家你好我有給我這個錯誤調用一個成員函數用戶數據()一個非對象

Fatal error: Class 'MY_Controller' not found in C:\wamp\www\project\application\controllers\admin\home.php on line 3

我不知道爲什麼它顯示此錯誤代碼......

代碼的C:\瓦帕\ WWW \項目\應用\控制器\管理員\ home.php是

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Home extends MY_Controller { 

function index() 
{ 
    redirect('admin/login'); 
} 

function logout() 
{ 
    $this->session->unset_userdata('logged_in'); 
    //session_destroy(); 
    redirect('admin/login'); 
} 
} 
?> 

C的代碼:\瓦帕\ WWW \項目\應用\庫\ MY_Controller.php是

<?php 

class MY_Controller extends CI_Controller { 
public function __construct() { 
    parent::__construct(); 
    if (!$this->session->userdata('logged_in')) { 
     redirect('admin/login'); 
    } 
} 

} 

並且如果我把

class Home extends CI_Controller

,而不是

class Home extends MY_Controller

C:\wamp\www\project\application\controller\admin\home.php

文件

,並嘗試加載

C:\wamp\www\project\application\libraries\MY_Controller.php

C:\wamp\www\project\application\controllers\admin\home.php

構造它顯示

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

爲什麼會這樣?

回答

5

擴展系統類時,需要將類文件放到core而不是library文件夾中。將MY_Controller.php放入core文件夾中。

+0

謝謝..它的工作現在..但是我看到很多例子,他們把文件放在庫中。對我來說爲什麼它不起作用。任何想法.. – Subhra 2012-04-11 12:35:02

+2

如果你擴展系統類,你把文件內核而不是庫 – Broncha 2012-04-11 12:36:23

+0

感謝您的幫助。 – Subhra 2012-04-11 13:08:46

0

參考文獻:http://codeigniter.com/user_guide/general/core_classes.html

核心控制器需要被存儲在application/core/

所以,當你擴展一個對象,它會尋找它。庫文件夾是用於「外部」庫,你必須明確地包含在你的控制器存儲:

例: $this->load->library('class name');

信息在這裏庫:http://codeigniter.com/user_guide/general/libraries.html

+0

但是如果我在「C:\ wamp \ www \ project \ application \ contorller \ admin \ home.php」文件中放置「class Home extends CI_Controller」而不是「class Home extends MY_Controller」,並嘗試加載「C: \ wamp \ www \ project \ application \ contorller \ admin \ home.php「的構造函數中的」\ wamp \ www \ project \ application \ libraries \ MY_Controller.php「,它顯示」調用成員函數userdata )在非對象上「。 – Subhra 2012-04-11 13:19:04

+1

@Subhra,請在您的主要問題中更新您的錯誤,並且您的控制器路徑錯誤'contorller'? – Jakub 2012-04-11 13:34:08

相關問題