1. Go to this page and download the library: Download jessegall/laravel-memoize 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/ */
jessegall / laravel-memoize example snippets
use JesseGall\LaravelMemoize\Memoize;
class YourModel extends Model
{
use Memoize;
// ... your model code
}
public function expensiveCalculation($param1, $param2)
{
return $this->memoize(function() use ($param1, $param2) {
// Your expensive calculation here
// For example:
// - Complex database queries
// - API calls
// - Resource-intensive computations
$result = // ...
return $result;
});
}
class User extends Model
{
use Memoize;
public function expensiveCalculation()
{
return $this->memoize(function() {
// Expensive operation here...
return $result;
});
}
}
// Using Memoize in a model
$user1 = User::find(1);
$result1 = $user1->expensiveCalculation();
$user2 = User::find(1); // Different instance, same ID
$result2 = $user2->expensiveCalculation();
// $result1 and $result2 are the same, calculation done only once
// Passing a model as an argument
class Calculator
{
use Memoize;
public function complexCalculation(User $user)
{
return $this->memoize(function() use ($user) {
// Complex calculation
return $result;
});
}
}
$calculator = new Calculator();
// $result3 and $result4 are the same, calculation done only once
$result3 = $calculator->complexCalculation($user1);
$result4 = $calculator->complexCalculation($user2);
use JesseGall\LaravelMemoize\Drivers\CacheDriver;
use JesseGall\LaravelMemoize\Drivers\DriverInterface;
class YourModel extends Model
{
use Memoize;
public static function memoizeDriver(): DriverInterface
{
return new CacheDriver(ttl: 60); // Cache results for 60 seconds
}
}
use JesseGall\LaravelMemoize\Drivers\DriverInterface;
class CustomDriver implements DriverInterface
{
// Implement the
class YourModel extends Model
{
use Memoize;
public static function memoizeDriver(): DriverInterface
{
return new CustomDriver();
}
}
class YourModel extends Model
{
use Memoize;
public static function memoizeDriver(): DriverInterface
{
if (config('app.env') === 'production') {
return new CacheDriver();
}
return new MemoryDriver();
}
}
use App\Services\CustomArgumentSerializer;
use JesseGall\LaravelMemoize\ArgumentSerializerFactoryInterface;
class AppServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->bind(ArgumentSerializerFactoryInterface::class, CustomArgumentSerializerFactory::class);
}
}
use JesseGall\LaravelMemoize\ArgumentSerializerFactory;
use JesseGall\LaravelMemoize\Serializers\Serializer;
use App\Models\CustomModel;
use App\Services\CustomModelSerializer;
class ExtendedArgumentSerializerFactory extends ArgumentSerializerFactory
{
public function make(mixed $arg): SerializerInterface
{
if ($arg instanceof CustomModel) {
return new CustomModelSerializer();
}
return parent::make($arg);
}
}
use JesseGall\LaravelMemoize\ArgumentSerializerFactoryInterface;
class AppServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->bind(ArgumentSerializerFactoryInterface::class, ExtendedArgumentSerializerFactory::class);
}
}
$model->memoizeForget();
class User extends Model
{
use Memoize;
public static function memoizeCacheInvalidationEvents(): array
{
return ['saved', 'deleted', 'custom-event'];
}
// ...
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.