如何在PHP中通过类共享MySQL连接?

我想与保留查询PHP中的其他类共享MysqL连接.
因此MysqL.PHP包含:

    <?PHP
$user = 'username';
$passowrd = 'password';
$conn = new PDO('MysqL:host=ip;dbname=dbname;port=3306',$user,$passowrd);
?>

我称为MyLibrary.PHPPHP文件包含:

    <?PHP
include 'DB.PHP';

class Manager {

    function jsonQuery() {

        $response = array ();


        $st = $conn->query ( "query");

        $response ["results"] = array ();

        foreach ( $st->fetchAll () as $row ) {

            //my stuff with the query
        }

        $response ["success"] = 1;

        echo json_encode ( $response );
    }

}

$object = new Manager();

$object->jsonQuery();

?>

那我该怎么办?

解决方法:

它称为dependency injection,易于实现.您在实例化参数时将其直接传递到类中.这样,您就可以实现它一次以上,并在代码库中共享该实例

class Manager {
    /** @var \PDO */
    protected $pdo;

    public function __construct(\PDO $pdo) {
        $this->pdo = $pdo;
    }

    public function jsonQuery() {
        $response = array ();
        $st = $this->pdo->query("query");
        $response ["results"] = array();

        foreach ( $st->fetchAll() as $row ) {
            //my stuff with the query
        }

        $response ["success"] = 1;
        echo json_encode($response);
    }
}

$object = new Manager($conn);

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...