repat/不可变

一个简单的基于davidmpeace/immutability的Laravel包,允许您在Eloquent模型上强制不可变属性。

0.3 2018-10-26 13:36 UTC

This package is auto-updated.

Last update: 2024-09-20 08:32:43 UTC


README

repat/immutability 是一个基于 davidmpeace/immutability 的简单包,用于在您的 Eloquent 模型中强制属性不可变。不可变属性只有在它们 != null 时才能设置,但一旦模型被保存,值就不能更改。

许可证

不可变是开源软件,许可协议为 MIT 许可协议

安装

要开始使用不可变,请在 composer.json 文件中将它添加为依赖项

$ composer require davidmpeace/immutability

基本用法

要使用不可变库,您只需为任何希望标识不可变属性的模型使用不可变特质。通常,您会希望在超级类中实现特质,以便所有子类都能自动继承该功能。

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;
use Eloquent\Attributes\Immutability;

class MyAppSuperModel extends Model
{
    use Immutability;

    protected $immutable = ['id', 'uuid'];
}

类覆盖。

<?php
namespace App;

class User extends MyAppSuperModel
{
    protected $immutable = ['id', 'uuid', 'username'];
}

捕获异常

<?php
namespace App;

use Eloquent\Attributes\Exceptions\ImmutableFieldViolationException;
use Exception;

$user = User::find(1);

try {
    $user->username = "myNewUserName";
    $user->save();
} catch ( ImmutableFieldViolationException $e ) {
   // Handle immutable attribute violation error
} catch ( Exception $e ) {
   // Handle error
}