2016-07-07 23 views
2

我正在嘗試我的手在OOP,它最近對我不友好。這裏是我的課:OOP - 函數未定義?

class db { 

protected $host = ""; 
protected $dbname = ""; 
protected $user = ""; 
protected $pass = ""; 

function execute($query, $parameters, $usefetch) { 

    $dsn = "mysql:host=$this->host;dbname=$this->dbname"; 
    $pdo = new PDO($dsn,$this->user,$this->pass); 

    $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    try { 
     $statement = $pdo->prepare($query); 
     $statement->execute($parameters); 

     if($usefetch) { 
      $result = $statement->fetchAll(PDO::FETCH_ASSOC); 
      return $result; 
     } else { 
      return SUCCESS; 
     } 
    } 

catch(PDOException $ex) { return $ex; } 

} 

function __get($var) { 
    return $this->$var; 
} 

} 

當我試圖把它定義和調用函數「執行」我得到這個錯誤:

Fatal error: Uncaught Error: Call to undefined function execute() in /var/www/html/api/classes/sessions.php:49 Stack trace: #0 /var/www/html/index.php(3): require_once() #1 {main} thrown in /var/www/html/api/classes/sessions.php on line 49

這裏是我正在試圖把它(調試)

$db = new db(); 
die(var_dump($db.execute("SELECT * FROM sessions", [], true))); 

我不明白爲什麼會出現這個錯誤。它可以是我的PHP配置? (它不執行,即使我做dbexecute自己的功能,而不是一個對象)

+2

嘗試'$ DB->'而不是'$ db.':'$ DB->執行(...亞達,亞達,yada' – Rasclatt

+0

-___________________________-有3個小時的搜索時間 – Hiyper

+0

浪費時間!:D – Rasclatt

回答

2

你有一個連接.你應該有->。應該是:

$db->execute("SELECT * FROM sessions", [], true) 

相反的:

// This is a typo concatenation OR you may be temporarily confused ;) with 
// a Javascript object which does use the period for object/method 
$db.execute("SELECT * FROM sessions", [], true)) 
0

發生了什麼事是var_dump()被attemping來連接字符串$db與​​功能在全球範圍內的輸出。