我有自定义的db类,它扩展了MySQLi类
MySQLi-> query()方法使用MySQLi_Result类返回对象,但是我想扩展该类的功能,并以某种方式使结果对象成为MyResult类.像这样:
class MyResult extends MySQLi_Result{
function abc(){
//...
}
}
class MyDB extends MySQLi{
function q($query){
return /*Here some magic*/ $this->query();
}
}
$db=new MyDB();
$res=$db->q('SEL...');
$res->abc();
这个怎么做?
编辑:
有人说这是重复的,但是这里的问题更深了!
我需要$result对象像Mysqli_result类一样起作用,因此旧代码可以正常工作.
因此,我需要调用原始的Mysqli_result方法,例如:
$res->fetch_assoc();
//but not
$res->result->fetch_assoc();
解决方法:
class MyResult {
private $result;
function __construct(MySQLi_Result $result)
{
$this->result = result;
}
//Here some methods that use $this->result as you wish
}
class MyDB extends MySQLi{
function q($query){
return new MyResult($this->query($query));
}
}
$db=new MyDB();
$res=$db->q('SEL...');
$res->myMethod();
标签:oop,php
来源: https://codeday.me/bug/20191102/1990513.html