2016-07-07 125 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与​​功能在全球范围内的输出。