我在哪里抛出异常?

时间:2013-02-22 16:36:00

标签: php arrays exception loops foreach

我有以下php函数,它根据路径数组呈现模板数组。换句话说,如果您提供一组数组,例如:

$array_template = array(
    'carousel' => 'carousel', //type=>name (with out extension).
    'mini' => 'mini_feed'
)

$array_paths = array(
    'path_one' => 'path/to/one/',
    'path_two' => 'path/to/two/'
)

到这个功能:

protected function _render_templates_array($templates, array $template_name){
    foreach($template_name as $type=>$name){
        foreach($templates as $template=>$path){
            if(file_exists($path . $name . '.phtml')){
                require_once($path . $name . '.phtml');
            }
        }
    }

    return;
}

它应该找到并呈现每个文件,检查该文件的每个路径。

我遇到的问题是,我找到了一旦找到所有文件后如何停止搜索,但是,我是否将if附加到if并抛出我的错误?还是有其他地方我应该抛出我的错误?

基本上我需要:

  1. 渲染所有模板,确保查看这些模板的所有路径。
  2. 如果在任何路径中找不到模板,
  3. 会抛出错误。
  4. 加载所有文件后停止处理。
  5. 思想?

1 个答案:

答案 0 :(得分:1)

在两个foreach行之间添加$found = false;。在if内,在两个“结束foreach”$found = true;之间添加},根据需要添加if(!$found) throw.....;

protected function _render_templates_array($templates, array $template_name){
    foreach($template_name as $type=>$name){
        $found = false;
        foreach($templates as $template=>$path){
            if(file_exists($path . $name . '.phtml')){
                require_once($path . $name . '.phtml');
                $found = true;
            }
        }
        if( !$found) throw new .......;
    }

    return;
}