gpt4 book ai didi

Php:如何扩展库?

转载 作者:行者123 更新时间:2023-11-29 03:42:59 25 4
gpt4 key购买 nike

对于一个项目,我使用了一个名为 meekrodb 的 mysql 库,我想用我自己的 mysql 函数创建一个扩展类,所以如果库更新了,我只需要重新编辑扩展类。

作为初级程序员,我尝试按如下方式扩展库:

require './libs/meekrodb.2.0.class.php';
class Database_extend extends MeekroDB {
protected $db;
protected $database='';

function __construct($server=null, $user=null, $pass=null, $database=null)
{
// Creating a database object

$this->db= parent::__construct();
//$this->db= parent::__construct($server,$user,$pass,$database);
$this->database=$database;

} */
public function table_exists($tableName=null) {
if(is_null($tableName )){
trigger_error("Error in: ".__METHOD__." Missing table name.",E_USER_ERROR);
}
else{
$sql = "SELECT COUNT(*) AS count FROM information_schema.tables WHERE table_schema = '$this->database' AND table_name = '$tableName'";
$exists=$this->db->query($sql);
if($exists['count']>0)
{ return TRUE;}
else { return FALSE;}
}
}#-table_exists

如果我测试这个类(test.php)

 require './config.inc.php';
require './libs/Session.php';
require_once './libs/Ngram.class.php';
require_once './libs/Database_extend.class.php';
/*require_once './libs/meekrodb.2.0.class.php';*/

DB::$user=DB_USER;
DB::$password=DB_PASS;
DB::$dbName=DB_DATABASE;
$db1=new Database_extend(DB_SERVER, DB_USER, DB_PASS, DB_DATABASE);
$t=$db1->query("SELECT * FROM temp LIMIT 0,1");
//var_dump($t); //THIS WORKS
var_dump($db1->table_exists('tem')); // THIS DOESN'T work

我收到“在非对象上调用成员函数 query()”错误,这意味着 db 变量不是对象。

我怎样才能正确解决这个问题?

最佳答案

首先想到的是这里不传递初始化参数:

$this->db= parent::__construct();  

您的重写方法接收 $server, $user, $pass, $database,但您没有让它们对原始代码可用。因此它无法正确设置 $db 属性。

你也覆盖了$this->db。但是父构造函数肯定会自己分配它。

关于Php:如何扩展库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10923790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com