我希望非常清楚!
我有dbFacile课程,他们获取,插入并使用我的数据库。
$db = dbFacile::open( 'mysql', DATABASE, USERNAME, PASSWORD, HOST );
$db->fetchRows('select * from my_stores')
我已经创建了另一个类,我希望从my_stores表中获取所有商店的$数组。
class Stores {
public $s_table = 'my_stores';
public $rows;
public function get_all_stores (){
$this->rows = $db->fetchRows('select * from $this->s_table');
foreach($rows as $row) {
echo $row['name'] . '<br />';
}
}
}
我尝试在 get_all_stores 方法中启动dbFacile,但该类是抽象的,我不能。
答案 0 :(得分:1)
从它的github存储库的单元测试文件夹中,您可以看到新的用途是:
$db = \dbFacile\factory::mysql();
$db->open(DATABASE, USERNAME, PASSWORD, HOST);
$db->fetchRows('select * from my_stores');
...
使用您的班级的示例:
class Stores {
private $s_table = 'my_stores';
private $db;
public function __construct($db)
{
$this->db = $db;
}
public function get_all_stores (){
$rows = $this->db->fetchRows(sprintf('select * from %s', $this->s_table));
//do your stuff with rows and maby return $rows
}
}
$db = \dbFacile\factory::mysql();
$db->open(DATABASE, USERNAME, PASSWORD, HOST);
//usage
$stores = new Stores($db);
$stores->get_all_stores();
答案 1 :(得分:1)
您希望这样做的方法是通过其构造函数在$db
类中注入Stores
class Stores {
private $db;
public function __construct(className $db) {
$this->db = $db;
}
}
其中className应该是dbFacile基类的完整命名空间类名。因此,每当您尝试使用错误的依赖项实例化Stores时,PHP都会抛出错误。
通过这种方式,您可以在Stores类中注入依赖项,并且可以在该类中的任何位置使用$ this-&gt; db。
答案 2 :(得分:0)
您可以通过构造函数将db对象传递到Stores。阅读有关依赖注入的内容。