【问题标题】:OOP - Function not defined?OOP - 功能未定义?
【发布时间】:2016-07-07 04:24:09
【问题描述】:

我正在尝试 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;
}

}

当我尝试定义它并调用函数“执行”时,我得到了这个错误:

致命错误:未捕获的错误:调用未定义的函数 execute() in /var/www/html/api/classes/sessions.php:49 堆栈跟踪:#0 /var/www/html/index.php(3): require_once() #1 {main} 抛出 /var/www/html/api/classes/sessions.php 第 49 行

这是我尝试调用它的方式(调试)

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

我不明白为什么会发生此错误。可能与我的 php 配置有关吗? (它不会执行,即使我让 dbexecute 成为它自己的函数而不是对象)

【问题讨论】:

  • 尝试$db-> 而不是$db.$db->execute(...yada,yada,yada
  • -_______________________________- 搜索时间为 3 小时。
  • 浪费时间! :D
  • @Rasclatt 在另一个类中我试图调用 $db->e​​xecute() 但它说 $db 是未定义的。我声明 $db = new db();在全局范围内。
  • 所以你会喜欢class Session { public function __construct(db $db,$token) {...etc 然后你会喜欢$session = new Session(new db,$token);

标签: php oop


【解决方案1】:

你有一个串联.,你应该有->。应该是:

$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))

【讨论】:

    【解决方案2】:

    发生的情况是var_dump() 试图在全局范围内将字符串$dbexecute() 函数的输出连接起来。

    【讨论】:

      猜你喜欢
      • 2018-10-19
      • 2016-10-29
      • 2022-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 2015-09-30
      相关资源
      最近更新 更多