PHP视图文件的创建和使用(附带实例)
PHP 程序中,为了输出程序的运行结果,通常是在控制器中使用 return 返回字符串。为了更好地输出一个 HTML 页面,我们可以利用视图来实现。
视图文件保存在 resources\views 目录中,用户也可以在该目录下创建子目录,将不同模块的视图放在不同的子目录中。
视图文件的名称以“.blade.php”或“.php”结尾,前者表示使用 Blade 模板引擎,后者表示不使用模板引擎。当使用 Blade 模板引擎时,可以在视图文件中使用模板语法,如 {{ $title }} 表示输出变量 $title 的值,也可以使用 PHP 原生语法,如 <?php echo $title; ?>。如果不使用模板引擎,则只能使用 PHP 原生语法。另外,如果存在同名的“.blade.php”和“.php”文件,前者会被优先使用。
在控制器中加载视图文件使用 view() 函数,在 view() 函数中指定视图名称,视图名称的前面还可以添加路径。例如,将视图文件放在 home\test 子目录中,则有如下两种写法:
需要注意的是,如果需要在视图文件中引入静态资源(如 CSS 文件、JavaScript 文件、图片),则应将静态资源保存在项目的 public 目录下,因为该目录是站点的根目录。
例如,将样式文件 style.css 保存到 public\css\style.css 中,在视图中应使用如下代码引入:
下面演示视图文件的使用。创建视图文件后,在控制器中加载视图文件,具体步骤如下:
1) 创建 resources\views\show.blade.php 文件,具体代码如下:
2) 创建视图文件后,在 TestController 控制器中创建 show() 方法,加载视图文件,具体代码如下:
3) 为了使 show() 方法可以被访问,将该方法添加到路由,具体代码如下:
4) 通过浏览器访问,运行结果如下图所示:

图 1 查看视图
视图文件保存在 resources\views 目录中,用户也可以在该目录下创建子目录,将不同模块的视图放在不同的子目录中。
视图文件的名称以“.blade.php”或“.php”结尾,前者表示使用 Blade 模板引擎,后者表示不使用模板引擎。当使用 Blade 模板引擎时,可以在视图文件中使用模板语法,如 {{ $title }} 表示输出变量 $title 的值,也可以使用 PHP 原生语法,如 <?php echo $title; ?>。如果不使用模板引擎,则只能使用 PHP 原生语法。另外,如果存在同名的“.blade.php”和“.php”文件,前者会被优先使用。
在控制器中加载视图文件使用 view() 函数,在 view() 函数中指定视图名称,视图名称的前面还可以添加路径。例如,将视图文件放在 home\test 子目录中,则有如下两种写法:
return view('home/test/show'); // 写法1,用“/”分隔 return view('home.test.show'); // 写法2,用“.”分隔上述写法对应的视图文件路径为 resources\views\home\test\show.blade.php。
需要注意的是,如果需要在视图文件中引入静态资源(如 CSS 文件、JavaScript 文件、图片),则应将静态资源保存在项目的 public 目录下,因为该目录是站点的根目录。
例如,将样式文件 style.css 保存到 public\css\style.css 中,在视图中应使用如下代码引入:
<link rel="stylesheet" href="/css/style.css">
下面演示视图文件的使用。创建视图文件后,在控制器中加载视图文件,具体步骤如下:
1) 创建 resources\views\show.blade.php 文件,具体代码如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> 当前显示的视图文件是show.blade.php </body> </html>
2) 创建视图文件后,在 TestController 控制器中创建 show() 方法,加载视图文件,具体代码如下:
public function show() { // 加载视图文件resources\views\show.blade.php return view('show'); }在上述代码中,view() 函数的参数表示视图名称,不需要传入文件扩展名。
3) 为了使 show() 方法可以被访问,将该方法添加到路由,具体代码如下:
Route::get('test/show', [TestController::class, 'show']);
4) 通过浏览器访问,运行结果如下图所示:

图 1 查看视图