gpt4 book ai didi

php - 理解 Doctrine 2 ORM 以及它如何和应该与 WordPress 一起工作

转载 作者:搜寻专家 更新时间:2023-10-31 20:51:00 26 4
gpt4 key购买 nike

我想将 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 知道实体在哪里。文档中有什么地方对此进行了定义吗?

如果有人能简要介绍一下它们是如何协同工作的:配置、实体等。或者提供任何可能已经存在的清晰的教程,我将非常感激。

最佳答案

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

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

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

  3. Doctrine 2 使用大量内存和默认水化模式(对象)

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

关于php - 理解 Doctrine 2 ORM 以及它如何和应该与 WordPress 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7641022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com