0

我构建了一个函数,如果你给它一个路径数组,它将在每个路径中查找一个文件,如果你给它一个路径数组,它将只在该路径中查找文件。

我的问题是,当你给它一系列路径时,例如:

$array = array(
    'template_view_paths' => array(
        'path_name' => some/path/
        'path_name_two' => some/path/two/
    )
)

它似乎找到了文件,但由于文件不存在some/path/而继续前进并吓坏了。some/path/two/如果它在停止在其他路径中查找的任何路径中找到文件,我将需要更改什么?

代码 - 未重构

public function render_view($template_name){
    if(!isset($this->_options['template_view_path'])){
        throw new AisisCore_Template_TemplateException('Not view path was set.');
    }

    if(is_array($this->_options['template_view_path'])){
        foreach($this->_options['template_view_path'] as $template=>$path){
            require_once($path . $template_name . '.phtml');
        }
    }else{
        if(!file_exists($this->_options['template_view_path'] . $template_name . '.phtml')){
            throw new AisisCore_Template_TemplateException('Could not find: ' . $template_name . '.phtml at ' . $path);
        }

        require_once ($this->_options['template_view_path'] . $template_name . '.phtml');
    }
}

注意: 要关注的部分是if(is_array()){}循环

4

1 回答 1

0

不应该:

if(is_array($this->_options['template_view_path'])){
    foreach($templates as $template=>$path){
        require_once($path . $template_name . '.phtml');
    }
}else{

是:

if(is_array($this->_options['template_view_path'])){
    foreach($this->_options['template_view_path'] as $template=>$path){
        if (file_exists($filename = $path . $template_name . '.phtml')) {
            require_once($filename);
            return;
        }
    }

    throw new AisisCore_Template_TemplateException('Could not find: ' . $template_name . '.phtml in any paths');
}else{

你从来没有真正循环过$this->_options['template_view_path']

于 2013-02-20T21:43:33.403 回答