在上一个问题中,我询问了各种ORM库。事实证明,就ORM而言,Kohana看起来非常干净,但功能强大。不过,我已经有了一个正在使用的MVC框架。如果我不想把它作为一个框架运行,那么应该包括什么文件集才能给我提供DB和ORM基类文件呢?
更新:
我跳进去,开始看ORM源代码。有一件事立即让我感到困惑..所有的ORM类都有一个附加了_CORE的类名,即ORM_Core ORM_Iterator_Core,但是到处的代码都在扩展这个ORM类。问题是,我已经用6种不同的方法搜索了整个代码库,但我从未见过普通的ORM类定义或ORM接口定义或任何东西。有人能告诉我魔法是在哪里发生的吗?
发布于 2008-10-22 06:28:19
为什么不干脆用一个
class ORM extends ORM_Core {} 在你的代码中的某个地方?这样就不需要使用任何加载器代码了。
您还需要Kohana_Exception、数据库库(和适当的驱动程序)、Kohana::config()、Kohana::auto_load()、Kohana::log()方法(请在Database.php上搜索这些方法)。
Kohana是一个很棒的MVC框架,但并不是真的被设计成像这样的块。您可能还想研究Doctrine,另一种用于PHP (被设计为独立的)
发布于 2008-10-22 02:58:07
事实证明,Kohana使用了神奇的类加载,因此如果定义的带有_Core扩展的类不作为类存在
也就是说,ORM_Core存在,但ORM不存在,因此Kohana将神奇地定义一个ORM类,因为该包使用100%的魔术类加载。
如果有人感兴趣,我在这里记录我的发现,以便每个人以后都能找到它:
From Kohana.php in the system directory:
<-- snip if ($extension = self::find_file($type, self::$configuration['core']['extension_prefix'].$class))
{
// Load the extension
require $extension;
}
elseif ($suffix !== 'Core' AND class_exists($class.'_Core', FALSE))
{
// Class extension to be evaluated
$extension = 'class '.$class.' extends '.$class.'_Core { }';
-->
<-- snip
// Transparent class extensions are handled using eval. This is
// a disgusting hack, but it gets the job done.
eval($extension);
-->所以它做了一个评估..
发布于 2008-11-25 00:25:33
Zak,检查可维护框架的ORM。http://framework.maintainable.com/mvc/3_model.php#c3.7读得很透彻,我相信你会喜欢的。我在What is the easiest to use ORM framework for PHP?中详细介绍了这一点。
https://stackoverflow.com/questions/223788
复制相似问题