Php 不是';与数据库紧密耦合并使用存储过程?

Php 不是';与数据库紧密耦合并使用存储过程?,php,mysql,database,yii,Php,Mysql,Database,Yii,这是最近在工作中出现的,谷歌一直…呃,非常有用 我们使用的是Yii,但公司的政策是,所有数据库访问都必须通过MySQL存储过程来完成,这“破坏”了相当多的Yii,并使其使生活变得更轻松的一些尝试变得无关紧要。(需要明确的是,仅要求SPs的决定是在Yii实施后作出的。) 是否有任何PHP框架在这种限制下工作得更好?我们使用的是YiiBooster,因此任何其他框架都必须与引导兼容,否则UI/UX部门将开始尖叫 TLDR版本: 通过谷歌搜索,我的最初印象是,任何其他PHP框架都会有完全相同的限制。这

这是最近在工作中出现的,谷歌一直…呃,非常有用

我们使用的是Yii,但公司的政策是,所有数据库访问都必须通过MySQL存储过程来完成,这“破坏”了相当多的Yii,并使其使生活变得更轻松的一些尝试变得无关紧要。(需要明确的是,仅要求SPs的决定是在Yii实施后作出的。)

是否有任何PHP框架在这种限制下工作得更好?我们使用的是YiiBooster,因此任何其他框架都必须与引导兼容,否则UI/UX部门将开始尖叫

TLDR版本:


通过谷歌搜索,我的最初印象是,任何其他PHP框架都会有完全相同的限制。这是正确的吗?

你是正确的。任何其他框架也会有此限制

这是因为框架本身是对底层语言的抽象。框架抽象php代码,orm抽象MySQL中的存储

您需要的是ORM和数据库“管理器”之间的另一个抽象层。
恐怕您需要编写自己的orm或扩展和orm来完成此任务。

或者,您可以使用一个真正只管理控制器的“微框架”,让您可以自由地以符合SP的方式对模型进行编码,并以符合引导的方式对视图进行编码。

Yii本质上是可扩展的,根本不需要DB连接即可运行


我建议您编写自己的DataProvider类,以CArrayDataProvider为出发点。

您可以通过PDO直接与MySQL通信,我99%确信没有任何框架可以避免PDO或MySQLi。如果您想让ORM在使用存储过程作为MySQL的唯一接口的情况下工作,那么恐怕您会遇到麻烦。另一方面,“公司政策”闻起来像是官僚在搅乱开发,这从来都不是一个好案例,最终只会导致一件事。在我看来,你应该发布一个关于以这种方式使用存储过程进行开发的问题,并将结果展示给你的雇主。我怀疑你得到的反馈绝大多数是负面的。@ShaunUK我是PHP开发人员;我对DB团队做什么以及如何做没有发言权。你可能不得不告诉他们,他们对DB访问的限制将严重限制你作为PHP开发人员的能力。特别是因为他们的Decision与您当前(甚至可能是任何)的PHP框架不兼容。本质上,他们要求您将业务逻辑从您的层(PHP应用程序)移动到您对其访问和控制较少的层(数据库)。为你创造更多的工作,为他们带来更少的风险和未知。但这个问题是一年前提出的,可能已经过时了