github未及时更新,请移步gitee:https://gitee.com/wangfor/laravel9-basic-project
- Nginx/Apache
- MySQL
- PHP >= 8.0
数据库(配置根目录下 .env 文件)
DB_CONNECTION=mysql
// host地址
DB_HOST=127.0.0.1
// 端口号
DB_PORT=3306
// 数据库名
DB_DATABASE=laravel9
// 用户名
DB_USERNAME=root
// 密码
DB_PASSWORD=
只安装了项目最常用的几个,如果有需要可以从下面链接里看一下 下载量最高的 100 个 Laravel 扩展包推荐
-
代码提示工具
laravel-ide-helper
-
语言包
caouecs/laravel-lang
-
开发调试利器(debugbar 在 dev 环境安装)
laravel-debugbar
1、返回成功信息
return $this->success($data);
2、返回失败信息
return $this->fail($codeResponse);
3、抛出异常
$this->throwBusinessException($codeResponse);
4、分页
return $this->successPaginate($data);
1、验证参数是否为ID
$this->verifyId('key');
2、验证参数是否为整数
$this->verifyInteger('key');
3、验证参数是否为字符串
$this->verifyString('key');
4、验证参数是否为布尔值
$this->verifyBoolean('key');
....
有一个 index
方法,我们在获取参数时使用 verifyId
来校验请求的参数
public function index()
{
$id = $this->verifyId('id', null);
}
当我们请求时,因为传入的参数是字符串
http://127.0.0.1:8000/api/user/index?id=xddd
所以返回 The id must be an integer
,提示id必须为整数
如果项目比较小,接口较少,业务逻辑放在 controller 和 model 层就可以。否则就需要创建一个 Service 层来存放一些较复杂些的业务逻辑。
一、在 app
目录下,创建名叫 Services
的文件夹
二、在新创建的 Services
目录下创建基类 BaseService.php
,采用单例模式避免对内存造成浪费,也方便调用
<?php
namespace App\Services;
use App\Helpers\ApiResponse;
class BaseService
{
// 引入api统一返回消息
use ApiResponse;
protected static $instance;
public static function getInstance()
{
if (static::$instance instanceof static){
return self::$instance;
}
static::$instance = new static();
return self::$instance;
}
protected function __construct(){}
protected function __clone(){}
}
三、使用
例如要实现一个获取用户信息的功能
1、在 Service 层创建一个 UserService.php
的文件
<?php
namespace App\Services;
use App\Services\BaseService;
class UserService extends BaseService
{
// 获取用户信息
public function getUserInfo()
{
return ['id' => 1, 'nickname' => '张三', 'age' => 18];
}
}
2、在控制器 UserController
中增加一个 info
方法,并调用服务层中的 getUserInfo() 方法
use App\Services\UserService;
public function info()
{
$user = UserService::getInstance()->getUserInfo();
return $this->success($user);
}
3、返回