这就是我所拥有的:
class Entry
{
public $id;
public $name;
public $seoName;
public $timeCreated;
public function someFunction()
{
}
}
class EntryMapper
{
protected $db;
public function __construct(PDO $db)
{
$this->db = $db;
}
public function saveEntry(Entry &$entry)
{
if($entry->id){
$sql = "";
}
else {
$sql = "INSERT INTO tbl_entry (name, seo_name, time_created) VALUES (:name, :seo_name, :time_created)";
$stmt = $this->db->prepare($sql);
$stmt->bindParam("name", $entry->name);
$stmt->bindParam("seo_name", $entry->seoName);
$stmt->bindParam("time_created", $entry->timeCreated);
$stmt->execute();
$entry->id = $this->db->lastInsertId();
}
}
}
现在,这是我在视图文件中使用它的方法(当前只是测试插入命令):
$entry = new Entry();
$entry->name = "Some Company LLC";
$entry->seoName = "some-company-llc";
$entry->timeCreated = date("Y-m-d H:i:s");
$entryMapper = new EntryMapper(new PDO("mysql:host=....."));
$entryMapper->saveEntry($entry);
我想要这样的 $entryMapper 行:
$entryMapper = new EntryMapper(new Database());
这意味着我应该有一个单独的类 Database.php 来建立连接。
我尝试过,但由于我的类 EntryMapper.php 直接需要 PDO 实例,所以我收到错误。我尝试过从 PDO 扩展数据库,但这也会引发错误,指出 EntryMapper 中未调用 PDO 构造函数
有什么想法吗?
编辑:如果您看到任何代码耦合或类似的迹象,请告诉我,因为我想学习正确的编码。非常感谢!