fyennyi / async-cache-bridge-laravel
Laravel bridge for Fyennyi AsyncCache.
Fund package maintenance!
Patreon
Open Collective
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/fyennyi/async-cache-bridge-laravel
Requires
- php: ^8.1
- fyennyi/async-cache-php: ^1.1
- illuminate/contracts: ^9.0 || ^10.0 || ^11.0
- illuminate/support: ^9.0 || ^10.0 || ^11.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.93
- larastan/larastan: ^2.0
- orchestra/testbench: ^9.0
- phpunit/phpunit: ^10.5
README
This is a Laravel Bridge for the Async Cache PHP library. It integrates the asynchronous caching manager directly into your Laravel application, utilizing the standard Laravel Cache and Log components.
Features
- Automatic Discovery: Uses Laravel Package Discovery to register the service provider.
- Seamless Integration: Automatically injects:
cache.store(Your default Laravel cache repository, which implements PSR-16).log(Laravel Log Manager).
- Configuration Friendly: Allows defining global strategies via standard Laravel configuration files.
Installation
Run the following command in your terminal:
composer require fyennyi/async-cache-bridge-laravel
Configuration
To customize the configuration, publish the config file using the vendor:publish command:
php artisan vendor:publish --tag=async-cache-config
This will create a config/async-cache.php file where you can set the default strategy and adapter.
// config/async-cache.php return [ 'default_strategy' => 'strict', // strict, background, etc. 'adapter' => 'cache.store', // The service ID for the cache driver ];
Usage
Injecting the Manager
The bridge registers the Fyennyi\AsyncCache\AsyncCacheManager class as a singleton. You can use dependency injection to access it in your Controllers, Jobs, or Services.
namespace App\Http\Controllers; use Fyennyi\AsyncCache\AsyncCacheManager; use Fyennyi\AsyncCache\CacheOptions; use Illuminate\Http\Request; class WeatherController extends Controller { public function __construct( private AsyncCacheManager $cache ) {} public function index(string $city) { $promise = $this->cache->wrap( 'weather_' . $city, fn() => $this->fetchFromApi($city), new CacheOptions(ttl: 300) ); // Note: In a standard Laravel FPM request, you might need to wait for the promise. // In Swoole/Octane environments, you can handle it asynchronously. // Example for sync retrieval: return \React\Async\await($promise); } private function fetchFromApi(string $city) { /* ... */ } }
Contributing
Contributions are welcome! Please follow these steps:
- Fork the project.
- Create your feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Push to the branch (
git push origin feature/AmazingFeature). - Open a Pull Request.
License
This library is licensed under the CSSM Unlimited License v2.0 (CSSM-ULv2). See the LICENSE file for details.