在上一个问题中,我询问了各种ORM库。事实证明Kohana看起来非常干净但功能正常用于ORM。我已经有了一个我正在工作的MVC框架。如果我不想将它作为一个框架运行,那么为了给我提供DB和ORM基类文件,包含什么是正确的文件集?
更新
我跳了进来,开始查看ORM源代码。有一件事让我立刻感到困惑..所有ORM类的类名都附加了_CORE,即ORM_Core ORM_Iterator_Core,但是到处都是代码扩展了ORM类。问题是,我已经用6种不同的方式搜索了整个代码库,我从未见过一个简单的ORM类def,也没有看到过ORM接口def或者什么东西..有人可以告诉我魔法发生在哪里吗?
答案 0 :(得分:5)
为什么不拥有
class ORM extends ORM_Core {}
代码中的某个地方?这消除了使用任何加载器代码的需要。
你还需要Kohana_Exception,数据库库(和appropraite驱动程序),Kohana :: config(),Kohana :: auto_load(),Kohana :: log()方法(搜索Database.php)。
Kohana是一个伟大的MVC框架,但并不是真的被设计成像这样的块。您可能还想调查Doctrine,另一个用于PHP的ORM(设计为独立的)
答案 1 :(得分:3)
事实证明,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);
-->
所以它做了一个评估..
答案 2 :(得分:1)
Zak,检查可维护框架的ORM。 http://framework.maintainable.com/mvc/3_model.php#c3.7 仔细阅读,我相信你会喜欢它。我更详细地发布了这个: What is the easiest to use ORM framework for PHP?
答案 3 :(得分:0)