2011-10-03 57 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中困難得多。