【发布时间】: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 节,并且有了一些了解。我的问题是:
此配置是否足以让我在插件中使用 Doctrine 2 ORM?
在使用 Doctrine 2 ORM 之前我还缺少其他关键步骤吗? WordPress 插件似乎会自动从数据库中生成所有适当的类。我读了几次文档,但我觉得我错过了一些重要的步骤......或者 Doctrine 2 ORM 可能有那么大的不同?
EntityManager 是我可以在整个实体中使用的全局变量吗?
我假设我必须将所有内容链接在一起,文件中的
@Entity不足以让 Doctrine 知道实体在哪里。文档中是否有对此进行定义的地方?
如果有人能提供所有如何协同工作的简要说明:配置、实体等。或者提供任何可能已经存在的清晰教程,我将不胜感激。
【问题讨论】:
-
有两件事我不清楚。 #1 除了挑战之外,为什么有人会这样做?它只是使一个沉重的系统重了一吨,没有真正的积极结果。 #2 如果你不了解 Doctrine,为什么要在需要维护的插件中使用它?整个想法很疯狂。使用提供的 WordPress API。
标签: php wordpress orm doctrine-orm