考虑以下 PHP 代码:
<?php
require_once("myDBclass.php");
class a {
private $tablename;
private $column;
function __construct($tableName, $column) {
$this->tableName = $tablename;
$this->column = $column;
}
function insert() {
global $db;
$db->query("INSERT INTO ".$this->tableName." (".$this->column.") VALUES (1)");
}
}
class x extends a {
function __construct() {
parent::construct("x", "colX");
}
}
class y extends a {
function __construct() {
parent::construct("y", "colY");
}
}
?>
我有一个在另一个文件中实例化的 $db 对象,但每次我在类“a”中定义一个新函数时,我都希望以某种方式将它传递给类 a 的函数而不使用全局关键字。
我知道我可以通过在实例化类 X 和 Y 时传递 DB 对象,然后以这种方式将它传递给类 A(就像我目前使用表名和列一样)来做到这一点,但是我不知道我有多少次可能会扩展 A 类,并认为一定有另一种更简单的方法。
有人知道我可以考虑实现此目标的更好解决方案吗?
提前致谢
最佳答案
您可以使用 PHP 的 static properties .
class A {
static $db;
public static function setDB($db) {
self::$db = $db;
}
}
现在该属性将在该对象及其子对象的所有实例之间共享。
关于php - 将 DB 对象传递到多次扩展的类中的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3631860/