https://github.com/reshadman/eloquent-faster
Simple none-I/O cache for eloquent model mutator and accessor config.
https://github.com/reshadman/eloquent-faster
Last synced: 6 months ago
JSON representation
Simple none-I/O cache for eloquent model mutator and accessor config.
- Host: GitHub
- URL: https://github.com/reshadman/eloquent-faster
- Owner: reshadman
- License: mit
- Created: 2015-06-15T14:27:45.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2015-10-04T07:08:21.000Z (over 10 years ago)
- Last Synced: 2025-12-09T17:10:23.235Z (7 months ago)
- Language: PHP
- Homepage:
- Size: 176 KB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Eloquent Faster
Simple none-I/O cache for eloquent model accessor and mutators.
[](https://travis-ci.org/reshadman/eloquent-faster)
[](https://scrutinizer-ci.com/g/reshadman/eloquent-faster/?branch=master)
[](https://packagist.org/packages/reshadman/eloquent-faster)
[](https://packagist.org/packages/reshadman/eloquent-faster)
### Installation
```php
composer require "reshadman/eloquent-faster"
```
### Usage
First you need to add the following service provider to your application
```php
return [
//.. other config
'providers' => [
// other providers
\Reshadman\EloquentFaster\EloquentFasterServiceProvider::class
]
];
```
Then run the following artisan command
```
php artisan eloquent:cache
```
For clearing cache
```
php artisan eloquent:clear
```
>If you use *OPCACHE* in your PHP installation, this class will not use I/O for each script run, as opcache loads code into memory.
### Problem
Simply the problem begins from [this issuge](https://github.com/laravel/framework/issues/9276).
>Currently the eloquent model class contains a cache strategy for getters which first fetches all class methods and runs a loop on them filtering them by a regular expression.
This occurs [only once](https://github.com/laravel/framework/blob/5.1/src/Illuminate/Database/Eloquent/Model.php#L3207) per unique eloquent final object.
The getter cache container is only filled up with the [processed snake case attribute key](https://github.com/laravel/framework/blob/5.1/src/Illuminate/Database/Eloquent/Model.php#L3238).
>Each time a new model class is created for first time a loop with 50 to 100 iterations with processing a regular expression is run.
>Wouldn't it be cool to have something like ```php artisan eloquent:cache``` for this ?
### Running unit tests
Clone the repo
```
git clone git@github.com:reshadman/eloquent-faster.git
```
Then run ```composer update```
Now you can run phpunit in the repo folder.
```
vendor/bin/phpunit
```