Laravel 什么是控制器
Laravel控制器是Laravel框架中的一个重要特性。最初,我们是在路由文件中使用闭包来处理请求逻辑;现在,我们使用控制器类来代替在路由文件中使用闭包。控制器用于在一个类中处理请求逻辑,控制器的定义位于“ app/http/Controllers ”目录中。Laravel框架遵循MVC(模型视图控制器)架构,其中控制器作为在模型和视图之间传输流量的角色。
控制器的默认文件位于 app/http/Controllers 目录中。
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}
在上面的代码中,命名空间被使用是因为它允许你在同一个应用程序的不同部分中使用相同的函数名和类。例如,
namespace App\Http\functions1;
namespace App\Http\functions2;
假设我们需要运行函数,函数名为 RunQuery() 。它们存储在不同的目录中, functions1 和 functions2 ,因此我们可以说命名空间可以避免相同函数名称的冲突。
‘ use ‘用于将类导入当前文件。
让我们看看如何通过Git Bash窗口创建控制器。
步骤1: 打开Git Bash窗口,在Git Bash窗口中输入命令”php artisan make:Controller PostsController”以创建控制器。
上面的屏幕显示,名为 PostsController 的控制器已成功创建。
步骤2: 现在转到你的项目中,看看 PostsController 文件是否已经创建。文件的路径是:
C:\xampp\htdocs\laravelproject\app\Http\Controllers
上面的屏幕显示了 PostsController 文件已创建。
下面是 PostsController.php 文件的默认代码:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PostsController extends Controller
{
//
}
上面的代码包含了一个继承Controller类的类,但该类不包含create、update或delete等函数。现在我们将看到如何创建包含一些默认函数的控制器。
要创建控制器,我们首先要从项目中删除在上一步中创建的 PostsController.php 文件。
输入以下命令:
php artisan make:controller -resource PostController ,这个命令用于创建控制器。
现在,转到您的项目以查看 PostController 文件是否已创建。文件的路径为:
C:\xampp\htdocs\laravelproject\app\Http\Controllers
上面的屏幕显示了 PostController 文件已成功创建。
PostController.php 文件的默认代码如下:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PostController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Reques request
* @return \Illuminate\Http\Response
*/
public function store(Requestrequest)
{
//
}
/**
* Display the specified resource.
*
* @param int id
* @return \Illuminate\Http\Response
*/
public function show(id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int id
* @return
\Illuminate\Http\Response
*/
public function edit(id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request
request
* @param intid
* @return \Illuminate\Http\Response
*/
public function update(Request request,id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int id
* @return
\Illuminate\Http\Response
*/
public function destroy(id)
{
//
}
}
上面的代码包含了用于对资源执行各种操作的函数,例如:
create(): 用于创建新的资源。
store(): 用于存储指定的资源。
update(): 用于更新存储中的指定资源。
destroy(): 用于从存储中删除指定的资源。