【问题标题】:cakephp ClassRegistry::init issuecakephp ClassRegistry::init 问题
【发布时间】:2013-06-19 14:02:56
【问题描述】:

我正在使用 ClassRegistry::init 方法在另一个模型中实例化一些模型。

所以我有

app/Model/Report.php app/Model/KPI/Factory.php

我已使用以下方法将模型包含在 KPI 文件夹中:

App::build(array(
    'Model' => array(APP . 'Model' . DS . 'KPI' . DS)
));

使用控制器中的模型是可以的。但是当将 ClassRegistry::init 与 Report.php 一起使用时,我收到一个奇怪的错误消息“无法重新声明类”。

更奇怪的是它在 Windows 上可以运行,但在 Linux 上却失败了。

谢谢

【问题讨论】:

  • Class could no be redeclared 表示该模型已加载。当某些东西在 Windows 上运行但在 Linux 上失败时;在大多数情况下,路径不正确。 Windows 不区分大小写,Linux 是。
  • 请调试APP。 '模型' 。 DS 。 “关键绩效指标”。 DS
  • moyend 是什么意思?

标签: cakephp


【解决方案1】:

我相信 App::build 方法用于向您的路径添加其他目录。模型目录中的所有内容都应该由 Cake 自动加载,即使它位于子目录中,因此您不需要 App::build。假设 Factory 类被声明为

class Factory extends AppModel {}

那么你应该可以使用它

ClassRegistry::init('Factory')

如果您有多个子目录,其中有一个名为“factory”的类,则将它们重命名为 KPI_Factory 并使用

ClassRegistry::init('KPI_Factory')

请注意,这一切都未经测试,但希望能让您走上正轨。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 2018-05-17
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多