编程语言
首页 > 编程语言> > php-了解Doctrine 2 ORM及其如何以及应该如何与WordPress一起使用

php-了解Doctrine 2 ORM及其如何以及应该如何与WordPress一起使用

作者:互联网

我想将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知道该实体在哪里.文档中是否有定义此内容的地方?

如果有人可以快速概述一下它们如何协同工作:配置,实体等.或者提供任何可能已经存在的清晰的教程,我将不胜感激.

解决方法:

恕我直言,您不应该将Doctrine2与WP一起使用

>对于具有大量业务逻辑的站点,Doctrine 2是更合适的解决方案,我相信您不会为此目的使用WP
> Doctrine 2具有庞大的代码库(〜11MB),这增加了类加载和请求处理的开销
> Doctrine 2在默认的水化模式(对象)下使用大量内存
>使用Doctrine很难构建自定义SQL.

标签:doctrine-orm,orm,wordpress,php
来源: https://codeday.me/bug/20191207/2087096.html