jrumbut / eloquent-memoize by jrumbut

Memoization for Eloquent (Laravel) Models
7,423
8
3
Package Data
Maintainer Username: jrumbut
Maintainer Contact: joshua.rumbut@gmail.com (Joshua Rumbut)
Package Create Date: 2016-07-10
Package Last Update: 2021-10-01
Language: PHP
License: MIT
Last Refreshed: 2024-05-02 03:00:10
Package Statistics
Total Downloads: 7,423
Monthly Downloads: 7
Daily Downloads: 0
Total Stars: 8
Total Watchers: 3
Total Forks: 4
Total Open Issues: 0

EloquentMemoize

Latest Version on Packagist Software License Coverage Status Quality Score Total Downloads SensioLabsInsight

Memoization for Eloquent models.

Install

Via Composer

$ composer require jrumbut/eloquent-memoize

Usage

class MyModel extends MemoizingModel
{
    protected static $memoized = ['slow_attribute'];

    //Now only slow the first time it's accessed
    public function getSlowAttribute($value)
    {
        sleep(3);
        return ucwords($value);
    }
}

-or-

class TraitModel extends Model
{
    use Memoizes;
    
    /**
     * Initialize attributes
     *
     * @return void
     */
    public static function boot()
    {
        parent::boot();
        static::setMemoized(['slow']);
    }

    //Now only slow the first time it's accessed
    public function getSlowAttribute($value)
    {
        sleep(3);
        return ucwords($value);
    }
}

Change log

Please see CHANGELOG for more information what has changed recently.

Testing

$ composer test

Contributing

Please see CONTRIBUTING and CONDUCT for details.

Security

If you discover any security related issues, please email joshua.rumbut@gmail.com instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.