我知道有一些关于此问题的问题,但我需要一个更"具体"的例子
和解决方案.
这是我的例子:
databse.class.php
class db{
public function connect($conStr){...}
}
Run Code Online (Sandbox Code Playgroud)
func.class.php
func class{
public insert_song(){
//ineed to use the conenct method from database
//then I would INERT INTO...
}
}
Run Code Online (Sandbox Code Playgroud)
问题:
1)我应该在func类中要求或扩展db类吗?
2)如果我需要,db类函数的范围是否仍然存在?(假设我有一个私有变量,可以从外面访问吗?)
您可能需要在配置中的某个位置存放数据库类的文件,因此您可以随时随地实例化数据库类.但是,因为您可能只需要一个数据库对象实例,所以您可以在配置中实例化它并使用依赖注入传递它.
这基本上意味着您将数据库对象传递给需要其他对象的其他对象.处理数据库对象的常用方法是使用构造函数注入,尽管setter注入也可以.
你做的是类似的事情:
// config:
$db = new Database;
$db->setConnectionValues();
$fooClass = new Foo($db);
$fooClass->insertSomething();
// fooClass:
class Foo
{
private $db;
public function __construct(Database $db)
{
$this->db = $db;
}
public function insertSomething()
{
$this->db->query("INSERT");
}
}
Run Code Online (Sandbox Code Playgroud)
这解决了大多数依赖性问题.
归档时间: |
|
查看次数: |
440 次 |
最近记录: |