我有一堆漂亮的OOP代码,但这些函数有着巨大的SQL查询。在2010年,我们是否真的仍然在线编写查询,或者在PHP中是否存在用于SQL查询的抽象,如MVC?
感谢您的见解。
编辑:我可能应该在这里提到这一点。但作为一名专业的PHP工程师,你不会相信我多久经常遇到过ORM,而且(甚至更糟!)正确编程的ORM执行得非常糟糕(尤其是多对多和多个连接查询)。我对ORM非常偏向,只有一些简单的ORM,例如Kohana。
我想我正在寻找的是一种通用的动态SQL设计模式。
答案 0 :(得分:8)
您可以在存储过程中编写查询(选择,插入,更新,删除...),只能从您的PHP代码中调用这些存储过程,而不是在您的php文件中编写查询。
这本书是学习mysql存储过程的一个很好的资源:
答案 1 :(得分:3)
我不了解PHP,但你可以使用ORM。维基百科有一个很好的list ORM软件。
答案 2 :(得分:1)
您可以查看使用Doctrine ORM。不确定这是否是你要求的。
答案 3 :(得分:1)
一种好方法是使用ORM,例如Doctrine。
答案 4 :(得分:1)
我主要在Joomla工作并为sql生成开发了自己的OO包装器。 但是当我在非joomla项目上工作时,我总是使用db2php,这是Netbeans IDE插件。 它甚至可以轻松执行复杂的查询。
模型的生成需要几次点击,一切都已完成。
这是非常棒的开源项目。看看吧。
答案 5 :(得分:1)
我喜欢使用PHP的OOP方法和静态数据库类以及存储过程(SP)的使用。
这样,所有Mysql代码都存储在服务器中,您可以使用SP内部的预准备语句实现权限检查以及复杂查询。使用Postgres,可以使用函数。
这允许使用通用代码构建SP调用的干净数据库类。最好是代理的方法接受对象作为参数,这样PHP开发人员可以专注于他的代码并享受他的IDE中的phpdoc的所有好处(自动完成!)。
e.g。
$x = new SEARCH_ITEM();
$x->name = $blab;
$resObj = $this->db->search_item($x);
这也使得将项目作为项目的API实现变得容易。
如果你不习惯,写SP很多。
周围有好的软件吗?我想有很好的抽象包我不知道......在这个意义上我没有看到像PDO或Adodb这样的抽象层。 Creole或Propel更像我正在考虑的东西。查询不是代码的一部分,并且正在使用像PDO这样的抽象层构建。我没有尝试克里奥尔语和推进。