是否可以在不使用整个框架的情况下在PHP中为ORM安装Kohana库?

StackOverflow https://stackoverflow.com/questions/223788

  •  03-07-2019
  •  | 
  •  

在上一个问题中,我询问了各种ORM库。事实证明Kohana看起来非常干净但功能正常用于ORM。我已经有了一个我正在工作的MVC框架。如果我不想将它作为一个框架运行,那么为了给我提供DB和ORM基类文件,包含什么是正确的文件集?

更新

我跳了进来,开始查看ORM源代码。有一件事让我立刻感到困惑..所有ORM类的类名都附加了_CORE,即ORM_Core ORM_Iterator_Core,但是到处都是代码扩展ORM类。问题是,我已经用6种不同的方式搜索了整个代码库,我从未见过一个简单的ORM类def,也没有看到任何ORM接口def或者什么东西..有人可以告诉我魔法发生在哪里吗?

有帮助吗?

解决方案

为什么不拥有

class ORM extends ORM_Core {} 

代码中的某个地方?这消除了使用任何加载器代码的需要。

你还需要Kohana_Exception,数据库库(和appropraite驱动程序),Kohana :: config(),Kohana :: auto_load(),Kohana :: log()方法(搜索Database.php)。

Kohana是一个伟大的MVC框架,但并不是真的被设计成像这样的块。您可能还想调查 Doctrine ,另一个用于PHP的ORM(旨在独立)

其他提示

事实证明,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);

-->

所以它做了一个评估..

Zak,检查可维护框架的ORM。 http://framework.maintainable.com/mvc/3_model.php#c3。 7 仔细阅读,我相信你会喜欢它。我更详细地发布了这个: 什么是最容易使用的PHP ORM框架?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top