首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP ORM _连接管理

问PHP ORM _连接管理
EN

Stack Overflow用户
提问于 2011-04-26 02:16:54
回答 2查看 651关注 0票数 0

哪个PHP ORM框架既好又轻量级,并且像hibernate框架一样具有连接池和连接管理功能

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-26 02:36:18

由于PHP的运行方式,您实际上找不到任何等同于连接池的东西。事实上,您能得到的最接近的是持久连接,这有其自身的缺陷。

我个人喜欢Propel,尽管称其为轻量级有点主观。我不完全确定“连接管理”是什么意思,但是propel设计用于处理多个数据库连接以及基于查询的主/从路由。您可以通过某些优化(APC、Memcached等)来提高ORM的速度。像对象水合这样的东西也有助于加速你的应用程序。

看看这个。并不是每个人都适合。

(为了完整起见,PHP的另一个流行的ORM称为Doctrine。这不是我个人的最爱。)

编辑

propel (对我来说)的一个优点是它与phing的集成。我认为来自jboss环境的人会发现缺少代码部署过程之类的东西。对我来说,phing解决了很多这样的问题。只要我必须安装phing才能让propel工作,我也可以利用它在整个应用程序上进行部署。

Phing可以滚动焦油球、zip文件、pear包,甚至RPM,如果你觉得勇敢的话。

票数 2
EN

Stack Overflow用户

发布于 2015-04-06 22:23:20

我发现db.php orm非常轻便,而且它不限制连接,您可以指定哪个表对应哪个类位于哪个连接上:

http://dbphp.net/connect-using-many-links/

缺乏框架是它似乎是新生儿,github repo上的文档每周更新2-3次,但我已经在我的电子商务框架中使用它,我可以说我完全满意。

我不知道您是否会详细介绍,但当您在db.php中定义连接链接时,您还需要为该链接指定一个所需的名称,如下所示:

代码语言:javascript
复制
$database->link (new \db\link ('my_mysql_link_name', 'mysql:host=127.0.0.1', 'root', '1234'));

如果它不是默认链接(第一个链接),则必须将其指定给您的类(如果您的类的表驻留在非默认链接数据库中):

代码语言:javascript
复制
/**
* link my_mysql_link_name
*/
class user
{

}

在将这个类表处理程序添加到数据库中之后:

代码语言:javascript
复制
$database->add ('\user);

则对该类表处理程序的所有查询都将在用户类指定的链接上执行:

代码语言:javascript
复制
$database->save (new \user());

因此上面代码行将使用my_mysql_link_name连接链接进行查询。

我还注意到一件有趣的事情,如果我在类属性之间设置了关系,那么db.php在同一查询中使用left join来获取相关行(一对一),如果相关字段表驻留在相同的连接链接上,否则它将使用单独的查询来获取对象的相关行(此外,您可以在属性文档注释中指定lazy关键字,以避免加载相关对象)。

此外,您还可以像这样访问您的连接:对于默认连接链接,可以使用$database->link('name_of_link') $database->link() 或,您可以将自己的类作为链接添加到数据库,并覆盖所有链接方法,如下所述:

http://dbphp.net/connect-using-custom-link/

另外,我最喜欢db.php的另一个地方是,只要调用$database->update(),它就可以自动创建或同步所有链接上的数据库和表结构。<3

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5781569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档