The*_*ebs 1 php wordpress arguments function
我有一个我必须填写的功能,而我能看到的唯一方法就是乱七八糟.我的功能是:
public function($keys = array(), $pages = array()){}
Run Code Online (Sandbox Code Playgroud)
基本上目标是:
页面使用相同的概念.
所以这是四个if语句,然后我们这样做:
如果key是数组但是页面不是,则如果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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
你可以看到它很快变得一团糟.get_specific_option
将检查该密钥是否存在.数组完成如下:array('key', 'secondKey')
依此类推.页面是这样完成的:array(is_page(), is_category())
- 每个页面返回true或false,因此布尔检查.get_sidebar()
如果,例如,未设置键,或页面不等于true,则会获得侧栏.
我不确定如何创建这个功能而不是灾难.有人可以帮忙吗?
您可以通过始终转换为阵列(快速单线程)来消除大量复杂性
$keys = is_array($keys) ? $keys : ($keys ? array($keys) : array());
$pages = is_array($pages) ? $pages : ($pages ? array($pages) : array());
Run Code Online (Sandbox Code Playgroud)
你的功能现在:
public function sidebar($keys = array(), $pages = array()){
$builder = AisisCore_Factory_Pattern::create('AisisCore_Template_Builder');
$keys = is_array($keys) ? $keys : ($keys ? array($keys) : array());
$pages = is_array($pages) ? $pages : ($pages ? array($pages) : array());
foreach ($keys as $key) {
if (!$builder->get_specific_option($key)) {
get_sidebar();
}
}
foreach ($pages as $page) {
if (!$page) {
get_sidebar();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎是很多潜在的侧边栏内容.只是说.但是,您可以传递NULL
两个参数中的任何一个,并且根本不会运行foreach
内容.
归档时间: |
|
查看次数: |
1013 次 |
最近记录: |