【发布时间】:2011-03-28 00:50:02
【问题描述】:
我正在编写一个 CakePHP 应用程序,并试图将经常显示(或特别长)的文本保存在配置文件中,以便我们可以轻松地对其进行编辑。
我应该把这个文件放在哪里以及如何访问它?
我还担心当我们需要显示文本时读取此文件的速度会权衡取舍,以及锁定其他进程能够使用它。这是我应该担心的事情还是框架可以处理?
【问题讨论】:
标签: php cakephp configuration text abstraction
我正在编写一个 CakePHP 应用程序,并试图将经常显示(或特别长)的文本保存在配置文件中,以便我们可以轻松地对其进行编辑。
我应该把这个文件放在哪里以及如何访问它?
我还担心当我们需要显示文本时读取此文件的速度会权衡取舍,以及锁定其他进程能够使用它。这是我应该担心的事情还是框架可以处理?
【问题讨论】:
标签: php cakephp configuration text abstraction
是的,Rob 说得很好。你可以把它放在视图中,无论是静态的还是动态的。如果是静态的,你可以直接将 HTML 部分放在一个元素中,然后可以在任何你想要的地方调用它。如果它是动态的,你可以通过Model从数据库中获取数据,传递给Controller,然后渲染到一个元素(View的一小部分或者你可以称之为Abstract)。
【讨论】:
如果它显示在多个位置,但是是静态的,一个元素就足够了。我不确定我是否会担心长度,但一个元素也可以在那里工作。如果需要频繁编辑,那么您可能需要考虑将数据库放入 CakePHP 可以轻松处理它的地方,尽管有人可能已经创建了一个同样可以工作的平面文件数据源(我从未看过)。
如果您打算拥有大量非结构化文本,您可能还想考虑使用 MongoDB、CouchDB 或其他“NoSQL”变体。对于您提到的内容,这似乎不值得,但如果您有更大的背景……也许吧。
框架无法处理速度权衡 - 事实上,使用框架完全是您已经选择支持的权衡。除非您预期高负载和频繁编辑,否则我也不会太担心锁定,但这只是本能反应。因为我不知道你的具体情况,所以请谨慎对待。
【讨论】:
...有经常显示的文本 (或特别长)
根据手册,将跨多个视图使用的文本存储在视图元素中是一种很好的做法(正如 Rob Wilkerson 所指出的)。
我们可以的地方 轻松编辑。
即使在这种情况下,仍然可以选择视图元素,因为您可以从多个视图中引用这个单个元素,因此无需存储在数据库中。如果您更改视图元素,它的更改会立即生效,无论它被引用/嵌入到哪里(非常合乎逻辑)。
...保存在配置文件中
这将被视为不好的做法,因为您开始削弱 MVC 结构。
超级简单,超级简短的阅读: http://book.cakephp.org/view/1081/Elements
祝你的项目好运。
【讨论】: