PHP code example of yesccx / laravel-enum

1. Go to this page and download the library: Download yesccx/laravel-enum library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

yesccx / laravel-enum example snippets

 php


declare(strict_types = 1);

use App\Enums\User\StatusEnum;

function check_user_status(User $user): User
{
    # 判断值是否符合预期
    if ($user->status != StatusEnum::ON) {
        throw new \Exception('用户已被禁用!');
    }

    return $user;
}
 php


declare(strict_types = 1);

use App\Enums\User\StatusEnum;

$user = User::query()->find(1);

echo $user->status; # 1
echo StatusEnum::make()->translate($user->status); # 启用
 php


use App\Enums\User\StatusEnum;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Casts\Attribute;

class User extends Model
{
    /**
     * 访问器:状态-说明
     *
     * @return Attribute
     */
    public function statusDefinition(): Attribute
    {
        return Attribute::make(
            get: fn () => StatusEnum::make()->translate($this->status)
        )
    }
}

$user = User::query()->find(1);

echo $user->status; # 1
echo $user->status_definition; # 启用
 php


use App\Enums\User\StatusEnum;
use App\Enums\User\GenderEnum;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Casts\Attribute;

class User extends Model
{
    /**
     * 访问器:状态-说明
     *
     * @return Attribute
     */
    public function statusDefinition(): Attribute
    {
        return StatusEnum::make()->toAttribute($this, 'status', default: '');
    }

    /**
     * 访问器:性别-说明
     *
     * @return Attribute
     */
    public function genderDefinition(): Attribute
    {
        return GenderEnum::makeAttribute($this, default: '');
    }
}
 php


echo UserEnum::STATUS__ON; # 1

# 判断值是否合法
echo UserEnum::make('status')->has(1); # true
echo UserEnum::make('gender')->has(1); # true

# 获取值的含义说明
echo UserEnum::make('status')->translate(1); # 启用
echo UserEnum::make('gender')->translate(1); # 男

# 获取取值范围
echo UserEnum::make('status')->values(); # [ 0 => '禁用', 1 => '启用' ]
echo UserEnum::make('gender')->values(); # [ 0 => '未知', 1 => '男' , 2 => '女' ]

# 表单验证规则
$validator = Validator::make(
    [
        'status' => request()->get('status')
    ],
    [
        'status' => [
            'bail',
            '
 php


declare(strict_types = 1);

namespace App\Enums\User;

use Yesccx\Enum\BaseEnum;
use Yesccx\Enum\Supports\Message;

# 用户-启用状态
final class StatusEnum extends BaseEnum
{
    public const OFF = 0;

    public const ON = 0;

    public function loadColumnMap(): array
    {
        # Anything ...

        return [
            self::OFF => '禁用',
            self::OFF => '启用'
        ]
    }
}
 php


use Yesccx\Enum\BaseEnum;

# 用户状态
final class UserStatusEnum extends BaseEnum implements CommonStatusEnum
{
}

/**
 * 文章 枚举类
 */
final class ArticleStatusEnum extends BaseEnum implements CommonStatusEnum
{

}

echo UserStatusEnum::OFF; # 0
echo ArticleEnum::OFF; # 0
 shell
php artisan enum:cache
 shell
php artisan enum:clear