如果对象未实例化,则调用静态函数会返回NULL? PHP OOP

时间:2016-05-12 11:43:08

标签: php mysql oop mysqli crud

问候好人,

我最近遇到了一些与OOP有关的问题。首先,我想从头开始创建CRUD Db类。这是一个代码:

class  Database{

    public static $link;
    public $message;
        public function __construct () {

        try {
            self::$link = mysqli_connect(HOST, USER, PASS, DB);

            if (!self::$link) {
                echo self::$link->error;
            }


        } catch (Exception $e) {
            die(" Failed connecting to DB") ;
        }
    }

    public static function query($SQL){

        return self::$link->query($SQL);

    }
        public static function select($table, array $columns){
        $columns=implode(",",$columns);
        $result=self::query("SELECT $columns FROM $table");


        return self::$link->fetch($result);
    }

}

所以问题是:

如果我调用我的静态选择函数:

Database::select('users', array('username'=>'user')); 

它返回:致命错误:在...中的非对象上调用成员函数query() 如果我像这样调试连接:var_dump(Database::$link)它返回NULL 但是如果我放置“$ db = new Database();”在那条线之上,它有效吗?

有人能告诉我我做错了吗?

谢谢!

0 个答案:

没有答案