[英]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.