2011-10-03 56 views
3

我想将Doctrine 2 ORM整合到WordPress中以用于我正在开发的插件。目前有一个插件提供Doctrine 1.2.3 ORM support in WordPress,但不是v2。了解Doctrine 2 ORM及其如何使用WordPress以及如何使用WordPress

我遇到的最大问题是我不明白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

有两件事我不清楚。 #1为什么有人会这样做而不是挑战?它只是使重型系统重量增加一吨,没有真正的积极成果。 #2如果你不明白Doctrine,为什么你会在需要维护的插件中使用它?整个想法很疯狂。使用提供的WordPress API。 – topdown

回答

3

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

  1. 学说2是一个现场更合适的解决方案具有巨大的商业逻辑,我相信你不使用WP这个目的

  2. 主义2具有庞大的代码库(〜11MB),其增加了用于分类加载和请求处理的开销

  3. 学说2使用大量具有默认水合模式(对象)的内存

  4. 构建自定义sql在Doctrine中困难得多。

相关问题