【问题标题】:Understanding Doctrine 2 ORM and how it can and should work with WordPress了解 Doctrine 2 ORM 以及它如何以及应该如何与 WordPress 一起使用
【发布时间】:2011-10-03 21:43:57
【问题描述】:

我想将 Doctrine 2 ORM 集成到 WordPress 中,以便在我正在开发的插件中使用。目前有一个插件提供Doctrine 1.2.3 ORM support in WordPress,但不提供 v2。

我遇到的最大问题是我不了解 Doctrine 2 ORM 如何与我的代码交互;具体来说,他们的configuration code 为我提供了什么以及我应该从这里去哪里:

// 3.1.1
require dirname( __FILE__ ) . '/lib/Doctrine/ORM/Tools/Setup.php';
$lib = dirname( __FILE__ ) . '/lib';
Doctrine\ORM\Tools\Setup::registerAutoloadDirectory($lib);

// 3.1.2
use Doctrine\ORM\EntityManager,
    Doctrine\ORM\Configuration;

if($applicationMode == "development") {
    $cache = new \Doctrine\Common\Cache\ArrayCache;
} else {
    $cache = new \Doctrine\Common\Cache\ApcCache;
}

$config = new Configuration;
$config->setMetadataCacheImpl($cache);
$driverImpl = $config->newDefaultAnnotationDriver('/path/to/lib/MyProject/Entities');
$config->setMetadataDriverImpl($driverImpl);
$config->setQueryCacheImpl($cache);
$config->setProxyDir('/path/to/myproject/lib/MyProject/Proxies');
$config->setProxyNamespace('MyProject\Proxies');

if ($applicationMode == "development") {
    $config->setAutoGenerateProxyClasses(true);
} else {
    $config->setAutoGenerateProxyClasses(false);
}

$connectionOptions = array(
    'driver' => 'pdo_sqlite',
    'path' => 'database.sqlite'
);

$em = EntityManager::create($connectionOptions, $config);

我继续阅读文档的各个部分,直到第 8 节,并且有了一些了解。我的问题是:

  1. 此配置是否足以让我在插件中使用 Doctrine 2 ORM?

  2. 在使用 Doctrine 2 ORM 之前我还缺少其他关键步骤吗? WordPress 插件似乎会自动从数据库中生成所有适当的类。我读了几次文档,但我觉得我错过了一些重要的步骤......或者 Doctrine 2 ORM 可能有那么大的不同?

  3. EntityManager 是我可以在整个实体中使用的全局变量吗?

  4. 我假设我必须将所有内容链接在一起,文件中的@Entity 不足以让 Doctrine 知道实体在哪里。文档中是否有对此进行定义的地方?

如果有人能提供所有如何协同工作的简要说明:配置、实体等。或者提供任何可能已经存在的清晰教程,我将不胜感激。

【问题讨论】:

  • 有两件事我不清楚。 #1 除了挑战之外,为什么有人会这样做?它只是使一个沉重的系统重了一吨,没有真正的积极结果。 #2 如果你不了解 Doctrine,为什么要在需要维护的插件中使用它?整个想法很疯狂。使用提供的 WordPress API。

标签: php wordpress orm doctrine-orm


【解决方案1】:

恕我直言,你不应该在 WP 中使用 Doctrine2

  1. Doctrine 2 更适合具有庞大业务逻辑的站点,我相信您不会为此目的使用 WP

  2. Doctrine 2 拥有庞大的代码库 (~11MB),这增加了类加载和请求处理的开销

  3. Doctrine 2 在默认水合模式下使用大量内存(对象)

  4. 使用 Doctrine 构建自定义 sql 要困难得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-03
    • 2012-08-21
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    • 2018-04-13
    相关资源
    最近更新 更多