首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP8中以str_replace() param形式无效

在PHP8中以str_replace() param形式无效
EN

Stack Overflow用户
提问于 2021-11-05 08:28:27
回答 2查看 330关注 0票数 0

我正在尝试将我的小项目移到PHP8中,并且正在与类似于str_replace()函数的功能进行斗争。

代码语言:javascript
复制
public function renderView($view)
{
    $layoutContent = $this->layoutContent();
    $viewContent = $this->renderOnlyView($view);
    return str_replace('{{content}}', ($viewContent), strval($layoutContent));
}

protected function layoutContent()
{
    ob_start();
    include_once Application::$ROOT_DIR."/views/layouts/main.php";
    ob_get_clean();
}


protected function renderOnlyView($view)
{
    ob_start();
    include_once Application::$ROOT_DIR."/views/$view.php";
    ob_get_clean();
}

问题是PHP8不能在$view函数中使用str_replace(),我得到:Expected type 'array|string'. Found 'void'

有人有办法解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-05 08:36:45

在不完全了解代码的其他部分的情况下,这只是我的猜测,但是尝试修改renderOnlyViewlayoutContent函数,如下所示:

代码语言:javascript
复制
public function renderView($view)
{
    $layoutContent = $this->layoutContent();
    $viewContent = $this->renderOnlyView($view);
    return str_replace('{{content}}', $viewContent, $layoutContent);
}

protected function layoutContent()
{
    ob_start();
    include_once Application::$ROOT_DIR."/views/layouts/main.php";
    $out = ob_get_clean();

    return $out;
}

protected function renderOnlyView($view)
{
    ob_start();
    include_once Application::$ROOT_DIR."/views/$view.php";
    $out = ob_get_clean();

    return $out;
}

这将分别从您的echoApplication::$ROOT_DIR."/views/layouts/main.php"文件中捕获每个Application::$ROOT_DIR."/views/$view.php" -ed信息,并将其作为字符串返回到调用方范围。

票数 1
EN

Stack Overflow用户

发布于 2021-11-05 08:47:01

如果您设置了strict_types = 1,那么必须将参数作为数组传递

代码语言:javascript
复制
public function renderView($view)
{
    $layoutContent = $this->layoutContent();
    $viewContent = $this->renderOnlyView($view);
    return str_replace(['{{content}}'], [$viewContent], strval($layoutContent));
}

你可以读这里

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69850373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档