PHP模型视图控制器(MVC)主动重新记录方法
我正在构建自己的PHP MVC框架。()我想知道如何做类似Rails Active Record的事情 例如:PHP模型视图控制器(MVC)主动重新记录方法,php,ruby-on-rails,activerecord,model-view-controller,Php,Ruby On Rails,Activerecord,Model View Controller,我正在构建自己的PHP MVC框架。()我想知道如何做类似Rails Active Record的事情 例如: Book.where('reserved = true').limit(10).offset(5) 这将转化为 SELECT * FROM Book WHERE reserved = true LIMIT 10 OFFSET 5; 因为这些类方法是链接的,所以它的计算结果都是该SQL语句。我找不到如何使链接类方法在PHP中彼此交互。我创建了这个类FlowingQuery,它将Arr
Book.where('reserved = true').limit(10).offset(5)
这将转化为
SELECT * FROM Book WHERE reserved = true LIMIT 10 OFFSET 5;
因为这些类方法是链接的,所以它的计算结果都是该SQL语句。我找不到如何使链接类方法在PHP中彼此交互。我创建了这个类FlowingQuery,它将ArrayObject扩展为一个数组,但我仍然不知道如何让类彼此交互。目前我有一个where
类方法,它返回数组中的所有对象,然后limit
计算返回的数组中对象的数量,只返回其中的10个
这实际上并没有转换成SQL
有什么想法或建议吗
谢谢如果方法在同一个类中,那么要使它们可链接,可链接方法需要返回$this
public function doSomething()
{
// Do stuff
return $this;
}
检查一下Laravel雄辩的ORM,它在PHP中实现了ActiveRecord模式。是一个反模式,因为它通过在同一个类中合并域业务逻辑和持久性逻辑而违反了SRP。当数据库模式变得复杂并积累了复杂性时,它就不得不进行测试,并受到性能问题的困扰。您应该采用这种模式。@arieljuod这是一个很好的资源。@tereško您有什么建议吗?有我能阅读的资源吗?谢谢你们两位time@CarlinoGonzalez阅读将是一个良好的开端。这就是之前两个相互关联的例外的来源。