类方法从使用较高类的方法/属性的类返回对象。怎么样?

时间:2011-05-03 20:10:21

标签: php

我正在尝试在我的代码中实现一个简单的行为,但我想不出一个像样的方法。看看我正在尝试做什么:

$db = new Database('mydb');
$db->createTable('sample');

$myTable = $db->getTable('test');
$myTable->insert($data);
$myTable->insert($data);
$myTable->edit('2', $data2);
$myTable->remove('1');

getTable是数据库类的一种方法,它返回 Table 类的对象。 类具有特定于表操作的方法,例如插入,编辑和删除。 数据库类具有应该能够使用的重要方法,例如exec和query。它还应该能够访问数据库中的属性,例如$ this-> pdo。

扩展数据库数据库是否应该使用静态方法? 使用数据库中的多种方法。有没有我可以用来实现这个的设计模式?一个工厂?

2 个答案:

答案 0 :(得分:3)

由于您没有创建相同基类(或接口)的n具体实现,因此工厂在这里没有意义。

我可能最终会做这样的事情(注意这可能实际上不是运行,提供一个概念而不是实际的实现,因为它不在我的头顶):

class Database
{
    private $name;
    public __construct($name)
    {
        $this->name = $name;
    }

    public function createTable($name)
    {
        $t = new Table($name, $this);
        // sql stuff here
        return $t;
    }

    public function exec($sql)
    {
        // table now has access to this due to the set reference
    }
}

class Table
{
    private $db;
    public function __construct($name, $db)
    {
        $this->db = $db;
    }
}

答案 1 :(得分:0)

我想说当$ db-> getTable()创建一个新的Table对象时,它会将对它自己的引用作为new()的参数传递给Table类。

然后,Table类将针对该引用执行任何exec或query命令。