我开始接触更多的 OO PHP 并为这些对象编写测试。我的主要问题是:如果我有一个Blog_Post
对象,并且我调用了$post->setCategory( 'Foo' )
,是否应该直接保存到数据库中?
我问的原因是为了进行单元测试,我经常不想将数据库用于这类事情,因为那不是我要测试的。
我看到人们建议做类似的事情
function __construct( PDO $db )
传入要使用的数据库对象,然后在测试时使用mock。但是,我真的不喜欢总是通过调用 Blog_Post 类来实例化我的数据库对象的想法。
这是 WordPress 的范围,它从根本上没有 OO 方法 - 对于我当前的 Blog_Post,setter 方法只会调用数据库(通过全局 $wpdb !!(我知道!))。
真的我想知道,像这样的东西阻力最小的路径的一般模式是什么。Blog_Post 会只写它自己,还是可能会使用“save()”方法将所有设置的属性实际推送到数据库?或者在调用 setter 之前在对象“setSaveToDB(false)”上设置一个标志。
谢谢,希望这有点道理!