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