首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cakephp和Croogo交叉模型

Cakephp和Croogo交叉模型
EN

Stack Overflow用户
提问于 2015-09-09 10:24:59
回答 1查看 58关注 0票数 1

我在用Croogo作为主系统。并为它建立了一个自定义插件。我们叫它MyPlugin吧。

Croogo和MyPlugin都有模型用户。

MyPlugin的控制器应该使用MyPlugin.User类(默认情况下)。它还手动包含在$uses数组中。

在本地电脑上一切正常。但在客户端服务器上,出于某些原因,它忽略了MyPlugin.User模型,并使用了Croogo的默认User.User模型。有什么好办法解决的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-09 10:42:20

不能在同一个命名空间中有两个名称相同的类。

如果你有这个:

代码语言:javascript
复制
<?php

// App/Model/User.php
class User extends AppModel

还有这个

代码语言:javascript
复制
<?php

// Plugins/MyPlugin/Model/User.php
class User extends MyPluginAppModel {

恐怕行不通。

您可能认为它有效,但会发生的情况是,不管您试图加载/引用哪个用户模型,都将使用哪个类先加载(然后用“此类表示该文件”填充缓存)。这也内置于App/ClassRegistry类的工作方式中:

代码语言:javascript
复制
$x = ClassRegistry::init('User');
$y = ClassRegistry::init('My.User');
$z = ClassRegistry::init('Other.User');

$x === $y === $z

以上并不意味着它们都是app/Model/User.php中类的实例--取决于其余应用程序代码的执行顺序,它将是其中任何一个的伪随机实例。

解决方案

唯一的解决方案是使用不同的类名,这样就不会出现名称冲突,例如:

代码语言:javascript
复制
<?php

// Plugins/MyPlugin/Model/MyPluginUser.php
class MyPluginUser extends MyPluginAppModel {

请注意,这不仅影响模型类,还影响应用程序中的所有类,例如controllers

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32477035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档