将包含的输出发送到变量中?

我在这里可能没有使用正确的方法,但我有一个 ErrorHandler 类,它会在出现错误时输出错误页面,如下所示:


private function loadErrorPage() {


  if( file_exists( $this->errorPagePath ) ) {

    // load the error page: since it's an include, it'll have access all of this classe's properties!

    // i.e. $this->errstr, $this->errid, etc.

    include ( $this->errorPagePath ); 

  }

  // no error page! print generic message!

  else {

    echo 'Got a problem! Contact the admin!';

  }


  exit(); 

}

我遇到的问题是有时我的页面是通过 AJAX 调用来调用的!如果我的 POST 中有错误被错误处理程序捕获,我需要能够 exit(),在 JSON 响应中返回完整生成的页面,或者只是指向它的链接,在 JS 中,重定向到实际的$this->errorPagePath页面回复中给出。但是,后面的解决方案不太有效,因为它需要所有必需的错误处理程序属性,例如 errid、错误字符串等。


不知道如何继续这里。有没有办法可以将 include() 的结果输出到变量中并执行以下操作:


$generatedErrorPage = include ( $this->errorPagePath );


if ( $this->sendErrorPageInJSON ) {

  exit(json_encode([ 'errorHtml' => $generatedErrorPage ]));

}

else

{

  echo $generatedErrorPage;

  exit();

}


ABOUTYOU
浏览 98回答 1
1回答

红糖糍粑

您必须启动输出缓冲,包括文件并结束缓冲以使用其内容初始化变量// Start output bufferingob_start();// Include the fileinclude ( $this->errorPagePath );// End buffering and return its contents$generatedErrorPage = ob_get_clean();
打开App,查看更多内容
随时随地看视频慕课网APP