第一种方式 异常使用工具包,错误码和错误信息,每个项目单独控制,互不影响
本次使用laravel5.7
1 安装laravel
2 composer.json里面引入git项目包
"url": "https://github.com/brady-wang/tool.git"
"brady/tool": "dev-master"
{ "name": "laravel/laravel", "type": "project", "description": "The Laravel Framework.", "keywords": [ "framework", "laravel" ], "license": "MIT", "repositories": { "0": { "type": "git", "url": "https://github.com/brady-wang/tool.git" }, "packagist": { "type": "composer", "url": "https://mirrors.aliyun.com/composer/" } }, "require": { "php": "^7.1.3", "fideloper/proxy": "^4.0", "laravel/framework": "5.8.*", "laravel/tinker": "^1.0", "brady/tool": "dev-master" }, "require-dev": { "beyondcode/laravel-dump-server": "^1.0", "filp/whoops": "^2.0", "fzaninotto/faker": "^1.4", "mockery/mockery": "^1.0", "nunomaduro/collision": "^3.0", "phpunit/phpunit": "^7.5" }, "config": { "optimize-autoloader": true, "preferred-install": "dist", "sort-packages": true }, "extra": { "laravel": { "dont-discover": [] } }, "autoload": { "psr-4": { "App\": "app/" }, "classmap": [ "database/seeds", "database/factories" ] }, "autoload-dev": { "psr-4": { "Tests\": "tests/" } }, "minimum-stability": "dev", "prefer-stable": true, "scripts": { "post-autoload-dump": [ "Illuminate\Foundation\ComposerScripts::postAutoloadDump", "@php artisan package:discover --ansi" ], "post-root-package-install": [ "@php -r "file_exists('.env') || copy('.env.example', '.env');"" ], "post-create-project-cmd": [ "@php artisan key:generate --ansi" ] } }
2. app下新建目录 Constants
目录下新建 ErrorCode.php ErrorMsg.php
<?php namespace AppConstants; class ErrorCode { /** * 基本错误码 */ const SUCCESS = 200; const UNAUTHORIZED = 401; const FAIL = 500; const USER_NOT_EMPTY = 10001; const PASSWORD_NOT_EMPTY = 10002; const PASSWORD_RE_NOT_EMPTY = 10003; const EMAIL_NOT_EMPTY = 10004; }
<?php namespace AppConstants; use AppConstantsErrorCode; return [ ErrorCode::SUCCESS => '成功' , ErrorCode::UNAUTHORIZED => '暂无权限!' , ErrorCode::FAIL => '失败' , ErrorCode:: USER_NOT_EMPTY => '用户名不能为空' , ErrorCode::PASSWORD_NOT_EMPTY => '请输入密码' , ErrorCode::PASSWORD_RE_NOT_EMPTY => '请再次输入密码', ErrorCode::EMAIL_NOT_EMPTY => '邮箱不能为空', ];
3.在app下的provider下建立服务提供者
ExceptionServiceProvider
<?php
/**
* Created by PhpStorm.
* User: costa
* Date: 2019/3/15
* Time: 14:12
*/
namespace AppProviders;
use BradyToolExceptionExceptionResult;
use IlluminateSupportServiceProvider;
class ExceptionServiceProvider extends ServiceProvider
{
/**
* 注册编码信息
*/
public function register()
{
$tpl = require (dirname(__DIR__) . '/Constants/ErrorMsg.php');
ExceptionResult::setMsgTemplate($tpl);
}
}
4 注册服务提供者到app下的bootstrap下的app文件
$app->register(AppProvidersExceptionServiceProvider::class);
5
在控制器或者服务里面使用
<?php
namespace AppHttpControllers;
use AppConstantsErrorCode;
use BradyToolExceptionExceptionResult;
use IlluminateHttpRequest;
class RegistorController extends Controller
{
public function index()
{
try{
ExceptionResult::throwException(ErrorCode::USER_NOT_EMPTY);
} catch (ExceptionResult $e){
dd($e->getMessage());
}
return view('registor/index');
}
public function registor()
{
ExceptionResult::throwException("sdfsdfsf",true);
}
}
返回结果

第二种方式,错误码和错误信息也放到工具包 一次设置,多次取用