2012-09-16 23 views
0

我試圖得到這個工作,但它不斷給我一個錯誤約$此爲行對象上下文不是:

echo $this->db->query("SELECT * FROM enquiries") ; 

在哪裏我錯了嗎? :(

class CoreModel { 
protected $db ; 

function __construct() 
{ 
    try{ 
     $this->db = new PDO("mysql:host=localhost;dbname=database", "user", "pass") ; 
     $this->db->exec('set names utf8') ; 
     $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 
     $this->db->setAttribute(PDO::ATTR_PERSISTENT, TRUE) ; 
    } 
    catch(PDOEXCEPTION $e) 
    { 
     echo $db->errorCode ; 
     die() ; 
    } 
} 

function test() 
{ 
    echo $this->db->query("SELECT * FROM enquiries") ; 
} 

function __destruct() 
{ 
    $this->db = NULL ; 
} 
} 

echo CoreModel::test() ; 

謝謝,我知道我失去了一些東西明顯!

回答

1

你沒有$this,如果你不創建CoreModel類的一個實例。你不能調用這個函數。

$db = new CoreModel(); 
$db->test(); 
+0

它會是網卡:靜態

使用new運營商創建一個實例。 e如果PHP不允許你靜態調用非靜態方法。如果你幸運的話,它只能工作,這是設計一種語言的方法。我正在談論PHP,所以我不知道爲什麼我期望有不同的東西...... – siride

+0

@siride - 如果PHP做了很多其他語言所做的事情,那麼它會很好,但它不會是PHP。 –

+0

@MystereMan不是所有的語言都是一樣的,但有一些核心概念和實踐應該共享,如果不共享,應該有一個很好的理由。 – siride

相關問題