Hata Kodu Oluşturma Bileşeni

Açıklama

Verilen kurallara göre otomatik olarak hata kodlarını oluşturmayı sağlar.

Dönüş verilerindeki code parametresi için, tüm özel code'lar, pozitif sayılar hizmetin normal olduğunu, negatif sayılar ise hizmette istisna oluştuğunu temsil eder.

Proje Adresi

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

Kurulum

composer require teamones/response-code-msg

Kullanım

Boş ErrorCode Sınıf Dosyası

  • Dosya Yolu: ./support/ErrorCode.php
<?php
/**
 * Otomatik oluşturulan dosya, lütfen manuel olarak değiştirmeyin.
 * @Author:$Id$
 */
namespace support;

class ErrorCode
{
}

Yapılandırma Dosyası

Hata kodları, aşağıdaki yapılandırma parametrelerine göre otomatik olarak artırılacaktır. Örneğin, system_number = 201, start_min_number = 10000 olarak yapılandırıldığında, oluşturulan ilk hata kodu -20110001 olacaktır.

  • Dosya Yolu: ./config/error_code.php
<?php

return [
    "class" => new \support\ErrorCode(), // ErrorCode sınıf dosyası
    "root_path" => app_path(), // Mevcut kod kök dizini
    "system_number" => 201, // Sistem tanımlayıcısı
    "start_min_number" => 10000 // Hata kodu oluşturma aralığı, örneğin 10000-99999
];

start.php'de Otomatik Hata Kodu Oluşturma Başlatma

  • Dosya Yolu: ./start.php
// Config::load(config_path(), ['route', 'container']); satırından sonra yerleştirin.

// Hata kodlarını oluştur, sadece APP_DEBUG modunda oluştur
if (config("app.debug")) {
    $errorCodeConfig = config('error_code');
    (new \teamones\responseCodeMsg\Generate($errorCodeConfig))->run();
}

Kod İçerisinde Kullanım

Aşağıdaki kod içinde ErrorCode::ModelAddOptionsError, hata kodunu temsil etmektedir, burada ModelAddOptionsError, kullanıcıların mevcut gereksinimleri doğrultusunda ilk harfi büyük yapılandırmak zorundadır.

Kodlamayı tamamladıktan sonra kullandığınızda çalışmayacak, bir sonraki yeniden başlatmadan sonra ilgili hata kodu otomatik olarak oluşturulacaktır. Bazı durumlarda iki kez yeniden başlatma gerekebilir.

<?php
/**
 * Navigasyonla ilgili işlemci sınıfı
 */

namespace app\service;

use app\model\Demo as DemoModel;

// ErrorCode sınıf dosyasını dahil et
use support\ErrorCode;

class Demo
{
    /**
     * Ekleme
     * @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) {
            // Hata mesajını çıkar
            throw_http_exception($e->getMessage(), ErrorCode::ModelAddOptionsError);
        }
        return [];
    }
}

Oluşturulan ./support/ErrorCode.php Dosyası

<?php
/**
 * Otomatik oluşturulan dosya, lütfen manuel olarak değiştirmeyin.
 * @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;
}