【问题标题】:Where should I place text that I'm trying to abstract in my CakePHP application?我应该在我的 CakePHP 应用程序中将我试图抽象的文本放在哪里?
【发布时间】:2011-03-28 00:50:02
【问题描述】:

我正在编写一个 CakePHP 应用程序,并试图将经常显示(或特别长)的文本保存在配置文件中,以便我们可以轻松地对其进行编辑。
我应该把这个文件放在哪里以及如何访问它?
我还担心当我们需要显示文本时读取此文件的速度会权衡取舍,以及锁定其他进程能够使用它。这是我应该担心的事情还是框架可以处理?

【问题讨论】:

    标签: php cakephp configuration text abstraction


    【解决方案1】:

    是的,Rob 说得很好。你可以把它放在视图中,无论是静态的还是动态的。如果是静态的,你可以直接将 HTML 部分放在一个元素中,然后可以在任何你想要的地方调用它。如果它是动态的,你可以通过Model从数据库中获取数据,传递给Controller,然后渲染到一个元素(View的一小部分或者你可以称之为Abstract)。

    【讨论】:

      【解决方案2】:

      如果它显示在多个位置,但是是静态的,一个元素就足够了。我不确定我是否会担心长度,但一个元素也可以在那里工作。如果需要频繁编辑,那么您可能需要考虑将数据库放入 CakePHP 可以轻松处理它的地方,尽管有人可能已经创建了一个同样可以工作的平面文件数据源(我从未看过)。

      如果您打算拥有大量非结构化文本,您可能还想考虑使用 MongoDB、CouchDB 或其他“NoSQL”变体。对于您提到的内容,这似乎不值得,但如果您有更大的背景……也许吧。

      框架无法处理速度权衡 - 事实上,使用框架完全是您已经选择支持的权衡。除非您预期高负载和频繁编辑,否则我也不会太担心锁定,但这只是本能反应。因为我不知道你的具体情况,所以请谨慎对待。

      【讨论】:

      • 帮助 Rob 的 cmets 权衡速度。您已经比基础 PHP 快了 1/5 到 1/10 的速度。在这种情况下不要担心。此外,在您编写文件时,锁定确实是一个更大的问题,所以如果您只是阅读它,那也没关系。
      【解决方案3】:

      ...有经常显示的文本 (或特别长)

      根据手册,将跨多个视图使用的文本存储在视图元素中是一种很好的做法(正如 Rob Wilkerson 所指出的)。

      我们可以的地方 轻松编辑。

      即使在这种情况下,仍然可以选择视图元素,因为您可以从多个视图中引用这个单个元素,因此无需存储在数据库中。如果您更改视图元素,它的更改会立即生效,无论它被引用/嵌入到哪里(非常合乎逻辑)。

      ...保存在配置文件中

      这将被视为不好的做法,因为您开始削弱 MVC 结构。

      超级简单,超级简短的阅读: http://book.cakephp.org/view/1081/Elements

      祝你的项目好运。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-05
        • 1970-01-01
        • 2016-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-30
        • 2015-02-21
        相关资源
        最近更新 更多