php如何创建类的实例,php-如何使一个类的实例成为另一类的实例

本文介绍如何在PHP中扩展MySQLi类,创建一个自定义的MyDB类,并且使查询结果对象成为MyResult类,同时保持与MySQLi_Result接口的兼容性。通过在MyResult类中封装MySQLi_Result,可以在不影响原有代码的情况下添加新的功能。
摘要由CSDN通过智能技术生成

我有自定义的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值