我想与保留查询的PHP中的其他类共享MysqL连接.
因此MysqL.PHP包含:
<?PHP
$user = 'username';
$passowrd = 'password';
$conn = new PDO('MysqL:host=ip;dbname=dbname;port=3306',$user,$passowrd);
?>
<?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);