Doctrine 2.自动生成代理

Ren*_*gen 10 php orm doctrine-orm

我有一个奇怪的问题.我想在Doctrine 2中关闭代理的自动生成.我发现这行代码应该做(并且做)诀窍:

$config->setProxyDir(APPPATHSYSTEM."/proxies");
$config->setProxyNamespace('Proxies');

// Auto generate proxies for development
$config->setAutoGenerateProxyClasses(DEVELOPMENT);
Run Code Online (Sandbox Code Playgroud)

在我的测试环境中,代理位于应用程序/代理.即:

application/proxies/BaseUserProxy.php
Run Code Online (Sandbox Code Playgroud)

当我在实时环境中时,我的代码突然在application/proxies/Proxies上搜索代理,而不是实际位置.

我确实理解它与命名空间有关,但我不明白为什么它在使用setAutoGenerateProxy方法时表现不同.

有任何想法吗?

编辑

我确实使用以下方法生成新代理:

orm:generate-proxies
Run Code Online (Sandbox Code Playgroud)

选项.

这给了我这个输出:

php doctrine.php orm:generate-proxies
Processing entity "Base\Element"
Processing entity "Base\Page"
...
Processing entity "Base\Site"

Proxy classes generated to "/var/www/application/proxies"
Run Code Online (Sandbox Code Playgroud)

查看最后一行,代理在/ var/www/application/proxies中生成.目录列表如下所示:

BaseElementProxy.php
BasePageProxy.php
...
BaseSiteProxy.php
Run Code Online (Sandbox Code Playgroud)

所以没有额外的Proxies目录.但是,当我刷新我认为有的网页时,它会给我以下错误:

Warning: require(/var/www/application//proxies/Proxies/BaseUserProxy.php) 
[function.require]: failed to open stream: 
No such file or directory in /var/www/library/Doctrine/Common/ClassLoader.php on line 148
Run Code Online (Sandbox Code Playgroud)

为什么要添加额外的Proxies目录?如果我确实在每个请求上生成代理,则它不会在额外的Proxies目录中查找.任何人?

@Bryan M.:这不是解决方案,而是解决方法.此外,它不起作用.在生成代理时,如果应用您的建议,它们将在APPPATHSYSTEM中生成,我的webapp将尝试从APPPATHSYSTEM加载它们."Proxies".问题是,如果我使用,系统会在不同位置查找代理:

$config->setAutoGenerateProxyClasses(DEVELOPMENT);
Run Code Online (Sandbox Code Playgroud)

如果开发是真的,它将查看APPPATHSYSTEM.如果DEVELOPMENT设置为false,它将查看APPPATHSYSTEM."Proxies".只是切换开发常量会破坏我的应用程序,理论上应该是不可能的.

tim*_*dev 5

我不认为自动生成的代理关心。

与其将自动生成的代理推送到生产环境中,您可能应该doctrine orm:generate-proxies这样做,我怀疑这会将它们放在您的生产代码配置为查找它们的位置。