大家好!
我正在构建一个PHP站点,我决定使用Doctrine作为DBAL和ORM。我的PHP技能有点生疏,所以请帮助我理解一件事。
按照文档中的说明配置Doctrine的方法是执行如下代码:
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'
);
我很困惑的是你应该如何执行这段代码。这是你放在config.php文件中并包含在每个页面中的内容,基本上每次处理页面时都会执行此操作吗?或者我应该做一次这样的配置?
在相关的说明中 - 请帮助我理解在开发过程中如何设置缓存到ArrayCache而不是APC缓存?
谢谢!
答案 0 :(得分:0)
您可以在引导程序文件中创建一次连接和事件管理器。然后你可以将eventmanager实例传递给你的类构造函数,或通过静态注册表(脏脏脏)或...来实现它。
这是一个很好的起点(对于orm 2.0):
http://www.doctrine-project.org/docs/orm/2.0/en/tutorials/getting-started-xml-edition.html
在开发模式下使用ArrayCache的唯一原因我可以想到,您不必在此时配置APC并且可以专注于您的编码。在生产模式下,APC为您提供额外的提升,强烈推荐。
此致 FLO