哪个PHP ORM框架既好又轻量级,并且像hibernate框架一样具有连接池和连接管理功能
发布于 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,如果你觉得勇敢的话。
发布于 2015-04-06 22:23:20
我发现db.php orm非常轻便,而且它不限制连接,您可以指定哪个表对应哪个类位于哪个连接上:
http://dbphp.net/connect-using-many-links/
缺乏框架是它似乎是新生儿,github repo上的文档每周更新2-3次,但我已经在我的电子商务框架中使用它,我可以说我完全满意。
我不知道您是否会详细介绍,但当您在db.php中定义连接链接时,您还需要为该链接指定一个所需的名称,如下所示:
$database->link (new \db\link ('my_mysql_link_name', 'mysql:host=127.0.0.1', 'root', '1234'));如果它不是默认链接(第一个链接),则必须将其指定给您的类(如果您的类的表驻留在非默认链接数据库中):
/**
* link my_mysql_link_name
*/
class user
{
}在将这个类表处理程序添加到数据库中之后:
$database->add ('\user);则对该类表处理程序的所有查询都将在用户类指定的链接上执行:
$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
https://stackoverflow.com/questions/5781569
复制相似问题