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".只是切换开发常量会破坏我的应用程序,理论上应该是不可能的.
我不认为自动生成的代理关心。
与其将自动生成的代理推送到生产环境中,您可能应该doctrine orm:generate-proxies这样做,我怀疑这会将它们放在您的生产代码配置为查找它们的位置。
| 归档时间: |
|
| 查看次数: |
17586 次 |
| 最近记录: |