繁体   English   中英

变量失去其价值 PHP

[英]Variable loses its value PHP

我有下面的代码,我的变量$layout失去了它的价值,我不知道为什么, layoutContent只是一个获取我网站模板的方法,然后renderOnlyView获取应该在该模板中呈现的视图

$layout = $this->layoutContent($layoutParams);
echo ($layout);
$view = $this->renderOnlyView($view, $params);
echo ($layout);

发生错误的整个方法

public function renderView(string $view, array $params = [], array $layoutParams = [])
{
    $layout = $this->layoutContent($layoutParams);
    echo ($layout);
    $view = $this->renderOnlyView($view, $params);
    echo ($layout);

    $layout = str_replace('{{ title }}', $layoutParams['title'] ?? 'No title', $layout);
    
    return str_replace('{{ body }}', $view, $layout);
}

renderOnlyView

protected function renderOnlyView(string $view, array $params): ?string
{
    foreach ($params as $key => $param) {
        $$key = $param;
    }
    ob_start();
    $viewFilePath = Application::$ROOT_DIR . "/views/$view.blade.php";
    if (file_exists($viewFilePath))
        include_once $viewFilePath;
    else
        echo "the view <b>$view</b> is not found";

    return ob_get_clean();
}

layoutContent以防万一

public function layoutContent(array $params = [])
{
    $layout = Application::$APP->controller->layout ?? 'main';
    ob_start();
    include_once Application::$ROOT_DIR . "/views/layout/$layout.layout.php";
    $output = ob_get_clean();
    foreach ($params as $key => $param) {
        $output = str_replace('{{ ' . $key . ' }}', $param, $output);
    }

    return $output;
}

更多信息:PHP 版本:7.4.3,系统 ubuntu 20.04

你错过了一个点,这个函数被调用了两次,第一次是在你渲染我的视图时,第二次是当你视图抛出一个错误并且在捕捉它并尝试显示时再次调用 renderLayout,导致 include_once 返回 null因为它已经包含了 xD

好吧,伙计们发现问题,我错过了一个点,这个函数被调用了两次,第一次是当我渲染我的视图时,第二次当我的视图抛出错误并在捕获它并尝试显示renderLayout再次被调用,导致 include_once 返回 null,因为它已经包含在内:D

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM