instances can be obtained in several ways, with the recommended method being via Guardian factories.
Methods to Get a Guardian Instance
Required and Optional Arguments
The Guardian class requires the following arguments:
Argument
Type
Description
$identifier
string
Used to register rate limits and error-handling
$cache
CacheInterface
Cache driver to store rate-limiting and error-handling data
$rules
RateLimitingRulesetInterface|array|null
Ruleset or array of RateLimitRule rules (optional)
$errorRules
ErrorHandlingRulesetInterface|array|null
Ruleset or array of ErrorHandlingRule rules (optional)
$cachePrefix
string
Prefix for cache keys (default: 'guardian')
Note: In Laravel's make method, $cache is not required as it defaults to Laravel's cache.
Factory Instances
Non-Laravel Projects
use Midnite81\Guardian\Factories\GuardianFactory;
use Midnite81\Guardian\Store\FileStore;
$guardian = GuardianFactory::create(
'weather-conditions',
new FileStore('/path/to/cache'),
[RateLimitRule::allow(100)->perMinute()],
[ErrorHandlingRule::allowFailures(5)->perMinute()]
);
Laravel Projects
use Midnite81\Guardian\Factories\LaravelGuardianFactory;
// Using Laravel's built-in cache
$guardian = LaravelGuardianFactory::make(
'weather-conditions',
[RateLimitRule::allow(100)->perMinute()],
[ErrorHandlingRule::allowFailures(5)->perMinute()]
);
// Using a custom cache
$guardian = LaravelGuardianFactory::create(
'weather-conditions',
new FileStore('/path/to/cache'),
[RateLimitRule::allow(100)->perMinute()],
[ErrorHandlingRule::allowFailures(5)->perMinute()]
);
Direct Class Instantiation
use Midnite81\Guardian\Guardian;
use Midnite81\Guardian\Store\FileStore;
$guardian = new Guardian(
'spotify-playlist',
new FileStore('/path/to/cache'),
[RateLimitRule::allow(100)->perMinute()],
[ErrorHandlingRule::allowFailures(5)->perMinute()]
);
Dependency Injection (Laravel)
use Midnite81\Guardian\Guardian;
class MyController
{
public function __construct(protected Guardian $guardian)
{
$this->guardian->setIdentifier('spotify-playlist')
->setCache($customCache) // Optional: defaults to Laravel's cache
->addRules([RateLimitRule::allow(100)->perMinute()])
->addErrorRules([ErrorHandlingRule::allowFailures(5)->perMinute()]);
}
}
Facade (Laravel)
use Midnite81\Guardian\Facades\Guardian;
// Using Laravel's built-in cache
$guardian = Guardian::make(
'weather-conditions',
[RateLimitRule::allow(100)->perMinute()]
);
// Using a custom cache
$guardian = Guardian::create(
'weather-conditions',
new FileStore('/path/to/cache'),
[RateLimitRule::allow(100)->perMinute()],
[ErrorHandlingRule::allowFailures(5)->perMinute()]
);