【发布时间】:2011-02-04 06:47:18
【问题描述】:
假设我有一个名为Medium 的类,它可以代表不同类型的媒体。例如:
- 上传的视频
- 嵌入式视频
- 上传的图片
- 嵌入图像
我用 contants 表示这些类型,如下所示:
class MediumAbstract
{
const UPLOAD = 0x0001;
const EMBED = 0x0010;
const VIDEO = 0x0100;
const IMAGE = 0x1000;
const VIDEO_UPLOAD = 0x0101; // for convenience
const VIDEO_EMBED = 0x0110; // for convenience
const IMAGE_UPLOAD = 0x1001; // for convenience
const IMAGE_EMBED = 0x1010; // for convenience
const ALL = 0x1111; // for convenience
}
因此,我很容易在(抽象)存储库上对它们进行组合搜索,例如:
{
public function findAllByType( $type )
{
...
}
}
$media = $repo->findAllByType( MediumAbstract::VIDEO | MediumAbstract::IMAGE_UPLOAD );
// or
$media = $repo->findAllByType( MediumAbstract::ALL );
// etc..
您对在数据库等具体存储库中使用这些常量值有何感想?可以吗?或者我应该用数据库中有意义的数据替换它们。
Table medium:
| id | type | location | etc..
-------------------------------------------------
| 1 | use constants here? | /some/path | etc..
(当然我只会使用有意义的常量:VIDEO_UPLOAD、VIDEO_EMBED、IMAGE_UPLOAD 和 IMAGE_EMBED)
【问题讨论】:
-
不是真正的社区 wiki 问题 IMO。
-
+1 佩卡。社区维基让我不回答。我喜欢因回答问题而获得声誉积分。
-
我在问一个主观的(你感觉如何......)问题。但我会取消它的维基百科……看看社区对它的看法。 :)
-
... 这似乎不可能。 :( 或者我在这里遗漏了什么?
标签: php mysql database class constants