PHPackages                             softcomtecnologia/custom-accessor-and-mutator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. softcomtecnologia/custom-accessor-and-mutator

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

softcomtecnologia/custom-accessor-and-mutator
=============================================

to set attributes laravel model (accessors and mutators) without creating methods

v12.0.1(1y ago)05.8k↓33.3%MITPHP

Since Jun 12Pushed 2mo agoCompare

[ Source](https://github.com/softcomtecnologia/custom-accessor-and-mutator)[ Packagist](https://packagist.org/packages/softcomtecnologia/custom-accessor-and-mutator)[ RSS](/packages/softcomtecnologia-custom-accessor-and-mutator/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (4)Dependencies (1)Versions (16)Used By (0)

\#Custom Accessors and Mutators

> # Accessors e Mutators Personalizados
>
> [](#accessors-e-mutators-personalizados)

The *CustomAccessorsAndMutators* is a package to optimize the creation of accessor and mutator laravel. The focus is to set the accessors and mutators through an array informing the attribute as key and the method as value.

> A *CustomAccessorsAndMutators* é um pacote para otimizar a criação de accessor e mutator laravel. O foco é setar os accessors e mutators através de um array informando o atributo como chave e o metodo como valor.

Installation
------------

[](#installation)

> ## Instalação
>
> [](#instalação)

### Composer

[](#composer)

If you already use Composer (which is highly recommended), add the dependency under the policy *"require"* your *composer.json*:

> Se você já utiliza o Composer (o que é extremamente recomendado), adicione a dependência abaixo à diretiva *"require"* do seu *composer.json*:

```
    require : {
            "laravel/framework": "5.1.*",
            "igorwanbarros/custom-accessor-and-mutator": "v1.*"
        }
```

Usage
-----

[](#usage)

> ## Uso
>
> [](#uso)

The package uses the trait *CustomAccessorsAndMutators* to set the attributes, just add it in their class, as shown below:

> O pacote utiliza a trait *CustomAccessorsAndMutators* para setar os atributos, para isso basta adiciona-la em suas classes, conforme mostrado abaixo:

```
use Illuminate\Database\Eloquent\Model;
use Igorwanbarros\CustomAccessorAndMutator\CustomAccessorsAndMutators;

class Order extends Model
{
    use CustomAccessorsAndMutators;

    protected $table = 'order';

    protected $customAccessors = [
        //attribute name you model   => your default method for treating this type of data
        'you_attribute_name'         => '_yourMethodGet',
        'you_other_attribute_name'   => '_yourMethodGet',
    ];

    protected $customMutators = [
        'you_atribute_name'         => '_yourMethodGet',
        'you_other_atribute_name'   => '_yourMethodGet',
    ];

    protected function _youtMethodGet($value)
    {
        //you logic here
        return $value;
    }

    protected function _youtMethodSet($value)
    {
        //you logic here
        return $value;
    }
}
```

Or, in your Model class base:

> Ou, em sua class Model base:

```
class ModelBase extends Model
{
    use CustomAccessorsAndMutators
}
```

And in other models add only the fields and their respective methods:

> E nos demais models adicionar apenas os campos e seus respectivos métodos:

```
class Order extends Model
{
    protected $table = 'order';

    protected $customAccessors = [
        'you_attribute_name'    => '_yourMethodGet',
    ];

    protected $customMutators = [
        'you_attribute_name'    => '_yourMethodGet',
    ];

    protected function _youtMethodGet($value)
    {
        //you logic here
        return $value;
    }

    protected function _youtMethodSet($value)
    {
        //you logic here
        return $value;
    }
}
```

### Adding via Class

[](#adding-via-class)

> ### Adicionando via Class
>
> [](#adicionando-via-class)

You can also implement the FormatAccessorsAndMutator class to define your formatting logic (for certain types of data for example) and tells you there as shown below:

> Você pode também implementar a classe *FormatAccessorsAndMutator* para definir sua lógica de formatação (para determinados tipos de dados por exemplo) e informa-lá conforme é mostrado abaixo:

```
namespace App\FormatAccessorsAndMutators;

use Igorwanbarros\CustomAccessorAndMutator\FormatAccessorAndMutator;

class MoneyFormatAccessorsAndMutators implements FormatAccessorAndMutator
{
    public static function get($value)
    {
        //you logic here
        return $value;
    }

    public static function set($value)
    {
        //you logic here
        return $value;
    }
}
```

Already in its Model class you can set as follows:

> Já em sua classe Model você pode definir da seguinte forma:

```
use Illuminate\Database\Eloquent\Model;
use Igorwanbarros\CustomAccessorAndMutator\CustomAccessorsAndMutators;
use App\FormatAccessorsAndMutators\MoneyFormatAccessorsAndMutators;

class Order extends Model
{
    use CustomAccessorsAndMutators;

    protected $table = 'order';

    protected $customAccessors = [
        'you_attribute_name'         => MoneyFormatAccessorsAndMutators::class,
        'you_other_attribute_name'   => MoneyFormatAccessorsAndMutators::class,
    ];

    protected $customMutators = [
        'you_atribute_name'         => MoneyFormatAccessorsAndMutators::class,
        'you_other_atribute_name'   => MoneyFormatAccessorsAndMutators::class,
    ];

}
```

Licence
-------

[](#licence)

MIT Licence

###  Health Score

46

—

FairBetter than 93% of packages

Maintenance67

Regular maintenance activity

Popularity22

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity71

Established project with proven stability

 Bus Factor1

Top contributor holds 60% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~342 days

Recently: every ~470 days

Total

11

Last Release

195d ago

Major Versions

v1.0.4 → v2.0.02020-09-03

v2.0.1 → v12.0.02021-09-24

v2.0.2 → v12.0.12025-03-19

### Community

Maintainers

![](https://www.gravatar.com/avatar/23b53d117e80a86fbcdf5c2755f36dd2c8275c41125d4c11c969cae95605fddb?d=identicon)[softcomtecnologia](/maintainers/softcomtecnologia)

---

Top Contributors

[![igorwanbarros](https://avatars.githubusercontent.com/u/8918508?v=4)](https://github.com/igorwanbarros "igorwanbarros (9 commits)")[![andersonaragao](https://avatars.githubusercontent.com/u/3688261?v=4)](https://github.com/andersonaragao "andersonaragao (3 commits)")[![VINICIUSOLIVER](https://avatars.githubusercontent.com/u/27225482?v=4)](https://github.com/VINICIUSOLIVER "VINICIUSOLIVER (3 commits)")

### Embed Badge

![Health badge](/badges/softcomtecnologia-custom-accessor-and-mutator/health.svg)

```
[![Health](https://phpackages.com/badges/softcomtecnologia-custom-accessor-and-mutator/health.svg)](https://phpackages.com/packages/softcomtecnologia-custom-accessor-and-mutator)
```

###  Alternatives

[wireui/wireui

TallStack components

1.8k1.3M16](/packages/wireui-wireui)[livewire/volt

An elegantly crafted functional API for Laravel Livewire.

4195.3M84](/packages/livewire-volt)[ramonrietdijk/livewire-tables

Dynamic tables for models with Laravel Livewire

21147.4k](/packages/ramonrietdijk-livewire-tables)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
