我目前正在设计自己的数据库驱动网站.主要原因是为了学习目的,但我不会撒谎,包括少量的虚荣心!
虽然我相信到目前为止我的数据库设计还不错,但我仍然不能完全确定存储文章或其他大型文本的最佳方式.我知道大多数DBMS都有TEXT数据类型或等价的,可以容纳大量的文本.但是,将完整的文章存储为一个长字符串会导致阅读不愉快,因此需要进行格式化.
我是否将文章文本与所有HTML或BBcode标记一起存储 - 或者更简单的方法是在HTML或XML文档中创建页面并将该文件的路径存储在数据库中?
我非常喜欢将文章存储为XML文档的想法,因为我可以使用自定义标记轻松标记文章,并使用PHP的XML和XSLT函数将XML转换为HTML [或实际上,任何其他格式].它还允许作者指定何时创建行/分页符.这种方法当然需要额外的编码[我不害怕],但它确实存在使文章可搜索的问题.
我知道MySQL,例如,具有SQL语法,用于在文本字段中保存的字符串中搜索特定的术语/短语.如果我要将文本存储在单独的文件中,我如何才能使这些文章可搜索?
关于这么简单的问题,我在这里写了很多,所以我将其分解:
1:是否存在直接在数据库中存储大量格式化文本的"最佳"方式或
2:以HTML/XML/Whatever文件的形式保存到该文本的路径更好.
如果2,是否有一种优雅的方式使文本可搜索?
感谢您的时间 :)
假设我有字符串"blah blah F12 blah blah F32 blah blah blah blah",我想要匹配F12和F32,我将如何捕获两个Powershell魔法变量$ matches?
如果我在Powershell中运行以下代码:
$string = "blah blah F12 blah blah F32 blah blah blah"
$string -match "F\d\d"
Run Code Online (Sandbox Code Playgroud)
$ matches变量仅包含F12
我也尝试过:
$string -match "(F\d\d)"
Run Code Online (Sandbox Code Playgroud)
这次$ match有两个项目,但都是F12
我希望$ match包含F12和F32以进行进一步处理.我似乎无法找到办法.
非常感谢所有的帮助.:)
我想通过将它用于一个小项目来掌握Zend Framework 2.我经历过各种博客文章,文档,当然还有Akrabat(Rob Allen)的精彩教程.
但是,在我的所有阅读中,我没有对Zend Framework 2期望的模块的正确或首选目录结构进行任何解释.
在Akrabat教程中, Rob Allen的示例模块使用单个模型和控制器.他选择的目录结构是:
/module
/Album
/config
/src
/Album
/Controller
/Form
/Model
/view
/album
/album
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但是如果一个模块有多个控制器和模型,就像你在一个有多个页面/部分的网站中所期望的那样呢?我会将所有控制器放在/ src/Album/Controller目录中,还是为每个附加模型和相关控制器和视图创建另一组/ src/xxx /目录?
在/ view目录中,我是否将其分解为各种控制器使用的每组视图的子目录?
我认为我的困惑来自于Rob的例子中,他的主要控制器/模型与模块的名称相同.所以他的Album模块有一个目录,有更多的Album目录用于模型,控制器和视图.如果我要将他的模块从Album重命名为,例如,MyModule将使目录结构变为:
/module
/MyModule
/config
/src
/Album
/Controller
/Form
/Model
/view
/MyModule
/album
Run Code Online (Sandbox Code Playgroud)
然后它会遵循这样一个额外的模型,艺术家和相关的控制器:
/module
/MyModule
/config
/src
/Album
/Controller
/Form
/Model
/Artist
/Controller
/Form
/Model
/view
/MyModule
/album
/artist
Run Code Online (Sandbox Code Playgroud)
如果不是上述,那么它将是什么结构?
这当然是假设ZF2期望严格的结构.如果情况并非如此,那么显然我可以按照我想要的方式组织它.
我最近一直在将存储库模式视为一种在客户端代码所涉及的地毯上刷下所有持久性细节的方法。在阅读时,似乎[通常?]存储库负责聚合,而不仅仅是简单的类。
这对我来说很有意义,因为您可以有一个定义Posts的类和另一个定义Comments的类。由于这两者是密切相关的,因此这是合计的理想选择。但是,我将如何表示Users类及其与Posts的关系?
将用户与“ 帖子/评论”聚合在一起是有意义的,还是仅保留用户本身并仅通过良好的老式引用建立关联?
我曾尝试使用Google自己寻找答案,但我发现的许多示例都是独立的。即Posts / Comment或Order和OrderLine等。我找不到任何显示其他相关类如何组合在一起的东西。
尽管PHP或Java / C#可能是我希望使用这些思想的领域,但我没有将其应用于任何特定的东西。无论如何,我只是在探索并试图在我逃跑并创建怪物之前弄清楚其中的一些想法和概念。:)
感谢您的时间。
在过去的几周里,我一直在研究使用PHP的Web应用程序的MVC设计模式.从广义上来看,我理解该模式是如何工作的,以及为什么它是从小型或大型实现任何类型的Web应用程序的一种非常好的方式.
据我了解,我们有3个不同的层,通过控制器相互通信,如下所示:
用户输入--->查看--->控制器--->模型
现场输出<---查看<---控制器<---型号
根据我计划的实现,我希望为我的数据库中的每个表建立一个模型,每个模型将具有管理该表所需的所有函数/逻辑.反过来,这些模型中的每一个都将具有相关的视图.模型和视图当然会有一个允许它们使用的控制器.
现在,我很容易理解需要数据库的每个单一逻辑操作.但是,当特定操作需要使用多个表/模型时会发生什么?
应用程序的管理员端一次不一定需要多个模型来维护数据库.应用程序的前端或用户端是另一回事!假设我有一个网页,显示特定部分的文章列表,当前登录用户列表以及 - 从SO中借用示例 - 站点统计信息,例如标签云.
这一页在我计划的设计中至少需要3个模型 - 文章,用户和标签.
显然我的单个控制器不会削减它.那我该怎么办?
为我的网页创建新的单片控制器?
创建一个"超级"控制器来操纵较小的特定控制器
创建[在此插入精彩解决方案]
我目前正在误导选项2.仅仅因为它理论上应该减少编码,因为所有必要的行为都将存在于较小的控制器中 - 而且一切都很容易维护.
也许它看起来像这样:
articlecontroller.php
<?php
//Article Controller Script
if($_GET['article'] = 'foo')
{
//magic necessary for displaying article "foo".
}
?>
Run Code Online (Sandbox Code Playgroud)
usercontroller.php
<?php
//User Controller Script
if($_GET['user'] = 'display')
{
//magic necessary for displaying users
}
?>
Run Code Online (Sandbox Code Playgroud)
supercontroller.php
<?php
//"Super" Controller
//magic for setting up page
if(isset($_GET['article']))
{
include('articlecontroller.php');
}
if(isset($_GET['user']))
{
include('usercontroller.php');
} …Run Code Online (Sandbox Code Playgroud)