簡體   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