gpt4 book ai didi

php - MySQL 状态模型——最佳实现?

转载 作者:行者123 更新时间:2023-11-29 09:21:13 26 4
gpt4 key购买 nike

所以我正在与我的一位同事一起开发一个框架式系统。我们当前的挑战是如何最好地实现状态。通常,状态会携带唯一的数据(表行的颜色或要向用户显示的文本等)。目前,我们有一个包含所有这些数据的状态表。该表中包含一列:“css_class”,只要记录具有该状态,指定的 CSS 类就会附加到该元素(在本例中为 tr)。另外,为了给另一条记录分配特定的状态,需要在该数据库表中指定一个外键(在本例中,用户具有特定的状态。因此,在 users 表中,有一个 statuses_id 外键)。这个实现工作正常,但存在一些问题。首先,如果记录处于特定状态,我需要在 PHP 中执行特定操作怎么办?我们现在的做法是这样的:

if($user->status==0) 
{
//execute some code
}

如果状态可以改变,这确实不太有效。更改一种状态,关联的代码就会中断或行为与预期不同。

另一个问题,也是发布问题的主要原因是该表包含“css_class”列。这是非常通用的,可以让我们非常快速地改变特定状态的风格。但我们真的不喜欢将代码放入数据库的想法。也许在数据库中拥有 CSS 类不一定是坏事,但我真的不知道常见的做法是什么。有什么想法吗?

编辑:

我从前几个答案中收集到的是,我应该将所有 View 内容保留在模型内容之外,以便维护 MVC 框架。我的论点是,如果我将 css_class 名称保留在数据库之外,那么我将检查 View 中的状态 id,以便决定分配哪个类。因此,如果我将类放入数据库中,我就会将 View 信息放入模型中。如果我不将 CSS 类放入数据库中,那么我会将模型信息放入 View 中(检查它属于哪个 ID)。因此,通过不弄乱模型,我反而弄乱了 View ......

最佳答案

到目前为止,我见过的解决此问题的最优雅的方法(并且我现在已经使用了一些 MVC 实现)是仅将相关数据存储在数据库中。例如。您可以将 status="red"存储在数据库中,并让 View 根据 CSS 来了解如何处理红色状态。然后,通过设计一个足够先进的 View 层来创建可重用的结构,问题就得到了解决——这样,当 css 更改时,您就不需要总是逐页更新内容。

将此信息传递给模型在某种程度上违背了内容/表示分离的目的,因为现在您的代码需要知道从数据库中提取表示信息并将其转发到 View 级别,或者,不寒而栗,您将在 View 层代码中直接从数据库中提取这些内容,这使得维护成为一场噩梦,因为您现在失去了对信息流的控制。

关于php - MySQL 状态模型——最佳实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1724610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com