我正在学习oophp,但有一个小问题。
搜索2小时后,我需要您的帮助:(
我的课:
<?php
namespace App;
use \PDO;
class Database {
private $_pdo = null;
private static $_connexion = null;
// + my 4 mysql const
public function__construct(){
$this->pdo = new PDO ('mysql:dbname='.const.';host='.const.'', const, const);
}
public static function getPdo(){
if(is_null(self::$_connexion)){
self::$_connexion = new Database();
}
}
public static function select($test, $test2){
self::getPdo();
if($test == "*"){
$req = self::$_pdo->query("SELECT * FROM $test2"); // line 29
}
}
}
$test = Database::select('*', 'users');
错误:(第29行)致命错误:未捕获错误:访问未声明的静态 属性:App \ Database :: $ _ pdo
我不知道该怎么做,在研究中没有发现任何类似的问题。
感谢帮助!
编辑(抱歉): 天哪,我是个白痴...我删除了static因为有这个原因:注意:在第15行(新PDO ...)中以非静态方式访问静态属性App \ Database :: $ _ pdo
真正的错误是:(当$ _pdo为静态时):
在第29行的null处调用成员函数query()
答案 0 :(得分:0)
您试图将$_pdo
作为静态变量进行访问,即使未声明为静态变量也是如此。
这是一个hack,但可以。您可以将其适应您的班级
class Test {
private $_pdo ;
private static $self ;
function __construct() {
self::$self = $this ;
}
public static function select() {
self::$self->_pdo = 'test' ;
}
}
$t = new Test() ;
$t::select() ;