Tự động sinh mã lỗi

Giới thiệu

Có khả năng duy trì tự động việc sinh mã lỗi theo quy tắc được cung cấp.

Quy ước tham số code trong dữ liệu trả về, tất cả các mã code tùy chỉnh, số dương đại diện cho dịch vụ bình thường, số âm đại diện cho dịch vụ bất thường.

Địa chỉ dự án

https://github.com/teamones-open/response-code-msg

Cài đặt

composer require teamones/response-code-msg

Sử dụng

Tệp lớp ErrorCode rỗng

  • Đường dẫn tệp ./support/ErrorCode.php
<?php
/**
 * Tệp tự động sinh , xin đừng sửa đổi thủ công.
 * @Author:$Id$
 */
namespace support;

class ErrorCode
{
}

Tệp cấu hình

Mã lỗi sẽ tự động được sinh theo các tham số được cấu hình bên dưới, ví dụ hiện tại system_number = 201, start_min_number = 10000, thì mã lỗi đầu tiên được sinh ra sẽ là -20110001.

  • Đường dẫn tệp ./config/error_code.php
<?php

return [
    "class" => new \support\ErrorCode(), // Tệp lớp ErrorCode
    "root_path" => app_path(), // Thư mục gốc mã hiện tại
    "system_number" => 201, // Định danh hệ thống
    "start_min_number" => 10000 // Phạm vi sinh mã lỗi ví dụ 10000-99999
];

Thêm mã sinh tự động vào start.php

  • Đường dẫn tệp ./start.php
// Đặt sau dòng Config::load(config_path(), ['route', 'container']); 

// Sinh mã lỗi, chỉ sinh trong chế độ APP_DEBUG
if (config("app.debug")) {
    $errorCodeConfig = config('error_code');
    (new \teamones\responseCodeMsg\Generate($errorCodeConfig))->run();
}

Sử dụng trong mã

Trong đoạn mã bên dưới ErrorCode::ModelAddOptionsError là mã lỗi, trong đó ModelAddOptionsError cần người dùng tự viết hoa chữ cái đầu theo ngữ nghĩa hiện tại.

Sau khi viết xong bạn sẽ thấy không thể sử dụng được, sau lần khởi động tiếp theo sẽ tự động sinh mã lỗi tương ứng. Lưu ý đôi khi cần khởi động hai lần.

<?php
/**
 * Lớp dịch vụ liên quan đến hoạt động điều hướng
 */

namespace app\service;

use app\model\Demo as DemoModel;

// Nhập tệp lớp ErrorCode
use support\ErrorCode;

class Demo
{
    /**
     * Thêm
     * @param $data
     * @return array|mixed
     * @throws \exception
     */
    public function add($data): array
    {
        try {
            $demo = new DemoModel();
            foreach ($data as $key => $value) {
                $demo->$key = $value;
            }

            $demo->save();

            return $demo->getData();
        } catch (\Throwable $e) {
            // Xuất thông tin lỗi
            throw_http_exception($e->getMessage(), ErrorCode::ModelAddOptionsError);
        }
        return [];
    }
}

Tệp ./support/ErrorCode.php sau khi sinh mã

<?php
/**
 * Tệp tự động sinh , xin đừng sửa đổi thủ công.
 * @Author:$Id$
 */
namespace support;

class ErrorCode
{
    const LoginNameOrPasswordError = -20110001;
    const UserNotExist = -20110002;
    const TokenNotExist = -20110003;
    const InvalidToken = -20110004;
    const ExpireToken = -20110005;
    const WrongToken = -20110006;
    const ClientIpNotEqual = -20110007;
    const TokenRecordNotFound = -20110008;
    const ModelAddUserError = -20110009;
    const NoInfoToModify = -20110010;
    const OnlyAdminPasswordCanBeModified = -20110011;
    const AdminAccountCannotBeDeleted = -20110012;
    const DbNotExist = -20110013;
    const ModelAddOptionsError = -20110014;
    const UnableToDeleteSystemConfig = -20110015;
    const ConfigParamKeyRequired = -20110016;
    const ExpiryCanNotGreaterThan7days = -20110017;
    const GetPresignedPutObjectUrlError = -20110018;
    const ObjectStorageConfigNotExist = -20110019;
    const UpdateNavIndexSortError = -20110020;
    const TagNameAttNotExist = -20110021;
    const ModelUpdateOptionsError = -20110022;
}