Я хотел бы интегрировать Doctrine 2 ORM в WordPress для использования в плагинах, которые я разрабатываю. В настоящее время существует плагин, который предлагает Doctrine 1.2.3 поддержку ORM в WordPress , но не v2.
Самая большая проблема у меня заключается в том, что я не понимаю, как Doctrine 2 ORM взаимодействует с моим кодом; в частности, что мне дает их код конфигурации и куда мне идти дальше:
// 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, похоже, автоматически генерирует все соответствующие классы из базы данных. Я прочитал документацию несколько раз, но мне кажется, что я пропустил какой-то большой шаг ... или, может быть, ORM в Doctrine 2 сильно отличается?
Является ли EntityManager глобальной переменной, которую я могу использовать в своих сущностях?
Я предполагаю, что мне нужно связать все вместе, @Entity
в файле недостаточно для Доктрины, чтобы знать, где находится сущность. Есть ли где-нибудь в документации, что это определяет?
Если кто-нибудь может дать краткое изложение того, как все это работает вместе: конфигурация, объекты и т. Д., Или предоставить какие-либо четкие учебники, которые уже могут быть там, я был бы очень благодарен.