我有一个必须填写的函数,而我看到的唯一方法就是一团糟。我的功能是:
public function($keys = array(), $pages = array()){}
本质上,目标是:
- 如果键是一个数组并且每个键都没有设置,做一些事情。
- 如果 Keys 不是数组且未设置,请执行一些操作。
同样的概念也适用于页面。
所以这是四个 if 语句,然后我们这样做:
如果 key 是数组但 pages 不是,如果 pages 是数组但 key 不是。如果两者都是数组....
到目前为止,我所拥有的是:
public function sidebar($keys = array(), $pages = array()){
$builder = AisisCore_Factory_Pattern::create('AisisCore_Template_Builder');
if(is_array($keys)){
foreach($keys as $key){
if(!$builder->get_specific_option($key)){
get_sidebar();
}
}
}else{
if(!$builder->get_specific_option($keys)){
get_sidebar();
}
}
if(is_array($pages)){
foreach($pages as $page){
if(!$page){
get_sidebar();
}
}
}else{
if(!$pages){
get_sidebar();
}
}
}
你可以看到它很快变得一团糟。get_specific_option
将检查该密钥是否存在。数组是这样完成的:array('key', 'secondKey')
等等。页面是这样完成的:array(is_page(), is_category())
- 每个都返回真或假,因此是布尔检查。get_sidebar()
例如,如果未设置键或页面不等于 true,则将获得侧边栏。
我不确定如何创建此功能而不会造成灾难。有人可以帮忙吗?