建立自己的异常类方式

第一种方式 异常使用工具包,错误码和错误信息,每个项目单独控制,互不影响 

本次使用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 App\Constants;

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 App\Constants;

use App\Constants\ErrorCode;
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 App\Providers;


use Brady\Tool\Exception\ExceptionResult;
use Illuminate\Support\ServiceProvider;

class ExceptionServiceProvider extends ServiceProvider
{
    /**
     *  注册编码信息
     */
    public function register()
    {
        $tpl = require (dirname(__DIR__) . '/Constants/ErrorMsg.php');
        ExceptionResult::setMsgTemplate($tpl);
    }
}

4 注册服务提供者到app下的bootstrap下的app文件

 

$app->register(App\Providers\ExceptionServiceProvider::class);

5

在控制器或者服务里面使用

<?php

namespace App\Http\Controllers;

use App\Constants\ErrorCode;
use Brady\Tool\Exception\ExceptionResult;
use Illuminate\Http\Request;

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);
	}
} 

 返回结果

 

 

 

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

 

posted @ 2019-10-09 21:56  brady-wang  阅读(396)  评论(0编辑  收藏  举报