我正在用 PHP 编写的网站上的搜索功能中实现过滤器。
我的目标是保持这种可管理性,因为该项目的规模将在未来一段时间内大幅增长。现在搜索页面有一些输入字段,php 通过检查表单按钮的名称是否在 $_POST 数组中来检查表单是否已提交。在这个搜索页面的右侧,有一个实际搜索结果的列表,它是一个 foreach 循环在打印到屏幕上的项目列表上的输出。为了更清楚,我编写了一些代码来解释它的作用,并展示了我自己想出的东西:
<?php
$arrayToDisplay = array(
array("id"=>0,"name"=>"first","lastname"=>"last"),
array("id"=>1,"name"=>"first","lastname"=>"last"),
);
$acceptedName = "";
if(isset($_POST['buttonName'])) {
if(isset($_POST['name'])) {
$acceptedName = sanitize($_POST['name']);
}
}
?>
<form>
<input type="text" name="name">
<input type="submit" name="buttonName">
</form>
<?php
foreach($arrayToDisplay as $person) {
if(exists($acceptedName) && $acceptedName != "") {
if($person["name" == $acceptedname) {
echo $person["id"]." ".$person["name"];
}
}
else {
echo $person["id"]." ".$person["name"];
}
}
?>
这可以对一个值起作用,按名称过滤。但最终这些人员对象将具有近 50 个属性,搜索过滤器不仅要能够按名称过滤列表,还必须能够过滤各种人员属性。这个解决方案是不可维护的。
是否存在一种现有的设计模式,可以在这种情况下使用?
千巷猫影