假设我有一个对象,人物和建筑物的数据库。
人员ID的一个例子是PRS001。
建筑物ID的一个例子是BUL001。
人员是一张容纳所有人的桌子;建筑物是一张容纳所有建筑物的桌子。对象包含所有人和所有建筑物。
现在,如果我从Object中提取所有数据,我怎么知道它是人还是建筑物?
我可以这样做:
if(start_of_string_is(BUL))
then it's a building
else if(start_of_string_is(PRS))
then it's a person
但是,没有更简洁,更性感的方法来实现这一结果吗?
答案 0 :(得分:1)
你在这里制造一个基本的设计缺陷。 person
<{1}},building
<{1}}。
在对象定义世界中,那些将是不同类型的对象,并且要根据其类型检查对象的实例,您将使用InstanceOf。
此外,您正在使用密钥获取有关记录的信息。这不是键假设工作的方式。键唯一地标识记录,没有意义。
更糟糕的是,你已经有2张桌了。那么为什么不实例化人员表中的人物对象,以及建筑物表格中的建筑物对象。 PDO can instantiate这些对象在获取时自动生成。
示例:
building
从人员表中提取行时。
答案 1 :(得分:-1)
Goobri先生,您告诉我该字符串将始终以3个字符开头,然后您可以执行以下操作:
// Sample:
$ids = array('BUL001', 'PRS001');
foreach($ids as $id) {
switch (substr($id, 0, 3)) {
case 'BUL':
// it's a building
break;
case 'PRS':
// it's a person
break;
default:
// invalid
break;
}
}