PHP code example of tigrov / yii2-enum

1. Go to this page and download the library: Download tigrov/yii2-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/ */

    

tigrov / yii2-enum example snippets


class Status extends \tigrov\enum\EnumBehavior
{
    const ACTIVE = 'active';
    const PENDING = 'pending';
    const REJECTED = 'rejected';
    const DELETED = 'deleted';

    /** @var array list of attributes that are to be automatically humanized value */
    public $attributes = ['status' => 'status_key'];
    
    /** @var string|null a message category for translation the values */
    public static $messageCategory = 'status';
}

\Yii::$app->getDb()->createCommand()
    ->createTable('model', [
       'id' => 'pk',
       'status_key' => 'string',
   ])->execute();

class Model extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public function behaviors()
    {
        return [
            Status::class,
            // 'status' => [
            //     'class' => Status::class,
            //     'attributes' => ['status' => 'status_key'],
            // ],
        ];
    }
    
    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['status_key'], 'in', 'range' => Status::codes()],
        ];
    }
}

/**
 * @var ActiveRecord $model
 */
$model = new Model;
$model->status_key = Status::PENDING;

// The field 'status' has humanize and translated value, see \yii\helpers\Inflector::humanize($word, true)
$model->status; // is 'Pending' or translated value

// To get all enum values
Status::values();

// To get a display value
Status::value(Status::PENDING); // is 'Pending' or translated value

class GenderEnum extends \tigrov\enum\EnumBehavior
{
    const MALE = 'M';
    const FEMALE = 'F';

    /**
     * @var array list of attributes that are to be automatically humanized value
     * humanized => original attribute
     */
    public $attributes = ['gender' => 'gender_code'];
    
    /** @var string|null a message category for translation the values */
    public static $messageCategory = 'gender';
    
    /**
    * Returns value for empty attribute value
    * @return string|null
    */
    public static function emptyValue()
    {
        return static::t('Unspecified');
    }
}

class Model extends \yii\db\ActiveRecord
{
    public function behaviors()
    {
        return [
            GenderEnum::class,
        ];
    }
    
    public function rules()
    {
        return [
            [['gender_code'], 'in', 'range' => GenderEnum::codes()],
        ];
    }
}

$model->gender_code = GenderEnum::MALE; // is 'M'

// The field 'gender' has humanize and translated value
$model->gender; // is 'Male' or translated value

$model->gender_code = null;
$model->gender; // is 'Unspecified' or translated value. @see GenderEnum::emptyValue()

class MessengerEnum extends \tigrov\enum\EnumBehavior
{
    const SKYPE = 'skype';
    const WHATSAPP = 'whatsapp';
    const VIBER = 'viber';
    const FACEBOOK = 'facebook';
    const IMESSAGE = 'imessage';
    const TELEGRAM = 'telegram';
    const LINE = 'line';
    const JABBER = 'jabber';
    const QQ = 'qq';
    const BLACKBERRY = 'blackberry';
    const AIM = 'aim';
    const EBUDDY = 'ebuddy';
    const YAHOO = 'yahoo';
    const OTHER = 'other';
    
    /** @var array list of attributes that are to be automatically humanized value */
    public $attributes = ['type' => 'type_key'];
        
    /**
     * Values of Messengers
     * @param bool $withEmpty with empty value at first
     * @return array
     */
    public static function values($withEmpty = false)
    {
        $values = parent::values($withEmpty);
        
        // Correct some values
        $values['whatsapp'] = 'WhatsApp';
        $values['imessage'] = 'iMessage';
        $values['qq'] = 'QQ';
        $values['blackberry'] = 'BlackBerry';
        $values['aim'] = 'AIM';
        $values['ebuddy'] = 'eBuddy';
        $values['other'] = \Yii::t('enum', 'Other'),
        
        return $values;
    }
}

$model->type_key = MessengerEnum::WHATSAPP; // is 'whatsapp'
$model->type; // is 'WhatsApp'