SetRepository
extends AbstractRepository
in package
uses
DatabaseRepositoryTrait
Sets from MTGJSON's AllPrintings build — search them, fetch one by code, and open booster packs from their booster configurations — hydrating {@see Set} parts with their name translations.
Tags
Table of Contents
Properties
- $class : mixed
- $database : Database
- The local MTGJSON build.
- $discord : mixed
- $discrim : mixed
- $endpoints : mixed
- MTGJSON has no per-set route that fits in memory; see {@see DatabaseRepositoryTrait}.
- $mtg_http : Http
- The extended HTTP client.
Methods
- __call() : mixed
- This method checks if a method with the name "__Collection__{$name}" exists within the class. If it does, it calls that method with the provided arguments.
- __construct() : mixed
- AbstractRepository constructor.
- __get() : mixed
- Exposes a small allow-list of otherwise-protected properties (`discrim`, `cache`) for read access; any other key returns null.
- clear() : void
- Clears the repository.
- countDecks() : PromiseInterface<string|int, int>
- How many preconstructed decks MTGJSON has for a set.
- countSets() : PromiseInterface<string|int, int>
- Counts the sets a search matches, ignoring `page` and `pageSize`.
- create() : Part
- Builds a new, empty part.
- delete() : PromiseInterface<string|int, Part>
- Attempts to delete a part on the Discord servers.
- fetch() : PromiseInterface<string|int, Part>
- Gets a part from the repository or the MTGJSON build.
- filter() : ExCollectionInterface
- Runs a filter callback over the repository and returns a new collection based on the response of the callback.
- find() : Part|null
- Runs a filter callback over the repository and returns the first part where the callback returns `true` when given the part.
- first() : Part|null
- Returns the first cached part.
- fresh() : PromiseInterface<string|int, Part>
- Refills a part from the MTGJSON build.
- freshen() : PromiseInterface<string|int, static>
- Loads every set into the repository.
- generateBooster() : PromiseInterface<string|int, ExCollectionInterface<string|int, Card>>
- Opens a booster pack for a set: a pack layout is rolled against the set's MTGJSON booster configuration and each slot is filled from its weighted sheet. Cards from foil sheets have `isFoil` set.
- get() : Part|null
- Gets a part from the repository.
- getBoosterTypes() : PromiseInterface<string|int, array<string|int, string>>
- The booster types a set can open (`play`, `draft`, `collector`, …), the one {@see generateBooster()} picks by default first.
- getIterator() : Traversable
- Returns an iterator for the cache.
- getSets() : PromiseInterface<string|int, ExCollectionInterface<string|int, Set>>
- Searches sets. See {@see SetQuery} for every filter; the common ones are `name` and `block` (partial), `code` and `type` (exact), with `orderBy` (default `-releaseDate`), `page` and `pageSize` (1-100, default 100).
- has() : bool
- Checks if the array has an object.
- jsonSerialize() : array<string|int, mixed>
- keys() : array<string|int, int>|array<string|int, string>
- Get the keys of the items.
- last() : Part|null
- Returns the last cached part.
- offsetExists() : bool
- If the repository has an offset.
- offsetGet() : Part|null
- Gets a part from the repository.
- offsetSet() : void
- Sets a part into the repository.
- offsetUnset() : void
- Unsets an index from the repository.
- pull() : Part|mixed
- Pulls a part from the repository.
- pushItem() : self
- Pushes a single item to the repository.
- save() : PromiseInterface<string|int, Part>
- Attempts to save a part to the Discord servers.
- set() : mixed
- Sets a part in the repository.
- toArray() : array<string|int, mixed>
- Converts the weak caches to array.
- values() : array<string|int, mixed>
- Get the values of the items.
- cacheFreshen() : PromiseInterface<string|int, static>
- hydrate() : ExCollectionInterface<string|int, Set>
- Builds Set parts from decoded `sets` rows, attaching their name translations.
- lookup() : ?Set
Properties
$class
protected
mixed
$class
= \MTG\Parts\Set::class
Tags
$database
The local MTGJSON build.
protected
Database
$database
$discord
protected
mixed
$discord
$discrim
protected
mixed
$discrim
= 'code'
Tags
$endpoints
MTGJSON has no per-set route that fits in memory; see {@see DatabaseRepositoryTrait}.
protected
mixed
$endpoints
= []
Tags
$mtg_http
The extended HTTP client.
protected
Http
$mtg_http
Client.
Methods
__call()
This method checks if a method with the name "__Collection__{$name}" exists within the class. If it does, it calls that method with the provided arguments.
public
__call(string $name, array<string|int, mixed> $arguments) : mixed
If the method does not exist, it throws a BadMethodCallException.
Previously, this class utilized parent::method to call methods from the parent class.
This was changed to use the __Collection__method naming convention to avoid conflicts
Parameters
- $name : string
-
The name of the method being called.
- $arguments : array<string|int, mixed>
-
The arguments passed to the method.
Tags
Return values
mixed —The result of the called method.
__construct()
AbstractRepository constructor.
public
__construct(MTG|Discord $discord[, array<string|int, mixed> $vars = [] ]) : mixed
Parameters
- $discord : MTG|Discord
- $vars : array<string|int, mixed> = []
-
An array of variables used for the endpoint.
__get()
Exposes a small allow-list of otherwise-protected properties (`discrim`, `cache`) for read access; any other key returns null.
public
__get(string $key) : mixed
Parameters
- $key : string
-
Property name.
clear()
Clears the repository.
public
clear() : void
Use async $repository->cache->clear()
countDecks()
How many preconstructed decks MTGJSON has for a set.
public
countDecks(Set|string $set) : PromiseInterface<string|int, int>
Parameters
Tags
Return values
PromiseInterface<string|int, int>countSets()
Counts the sets a search matches, ignoring `page` and `pageSize`.
public
countSets([array<string|int, mixed> $params = [] ]) : PromiseInterface<string|int, int>
Parameters
- $params : array<string|int, mixed> = []
-
The same filters as getSets().
Tags
Return values
PromiseInterface<string|int, int>create()
Builds a new, empty part.
public
create([array<string|int, mixed>|object $attributes = [] ][, bool $created = false ]) : Part
Parameters
- $attributes : array<string|int, mixed>|object = []
-
The attributes for the new part.
- $created : bool = false
Tags
Return values
Part —The new part.
delete()
Attempts to delete a part on the Discord servers.
public
delete(Part|string $part[, string|null $reason = null ]) : PromiseInterface<string|int, Part>
Parameters
- $part : Part|string
-
The part to delete.
- $reason : string|null = null
-
Reason for Audit Log (if supported).
Tags
Return values
PromiseInterface<string|int, Part>fetch()
Gets a part from the repository or the MTGJSON build.
public
fetch(string $id[, bool $fresh = false ]) : PromiseInterface<string|int, Part>
Parameters
- $id : string
-
The discriminator value to search for.
- $fresh : bool = false
-
Whether to skip the cache.
Return values
PromiseInterface<string|int, Part> —Rejects with \OutOfBoundsException when the build has no such item.
filter()
Runs a filter callback over the repository and returns a new collection based on the response of the callback.
public
filter(callable $callback) : ExCollectionInterface
Parameters
- $callback : callable
Tags
Return values
ExCollectionInterfacefind()
Runs a filter callback over the repository and returns the first part where the callback returns `true` when given the part.
public
find(callable $callback) : Part|null
Parameters
- $callback : callable
Return values
Part|null —null if no items returns true when called in the callback.
first()
Returns the first cached part.
public
first() : Part|null
Return values
Part|nullfresh()
Refills a part from the MTGJSON build.
public
fresh(Part $part[, array<string|int, mixed> $queryparams = [] ]) : PromiseInterface<string|int, Part>
Parameters
- $part : Part
-
The part to refresh.
- $queryparams : array<string|int, mixed> = []
-
Unused; kept for the upstream signature.
Return values
PromiseInterface<string|int, Part>freshen()
Loads every set into the repository.
public
freshen([array<string|int, mixed> $queryparams = [] ]) : PromiseInterface<string|int, static>
Parameters
- $queryparams : array<string|int, mixed> = []
-
Unused.
Return values
PromiseInterface<string|int, static>generateBooster()
Opens a booster pack for a set: a pack layout is rolled against the set's MTGJSON booster configuration and each slot is filled from its weighted sheet. Cards from foil sheets have `isFoil` set.
public
generateBooster(Set|string $set[, string|null $type = null ]) : PromiseInterface<string|int, ExCollectionInterface<string|int, Card>>
Parameters
- $set : Set|string
-
A Set or a set code (e.g.
"KTK"). - $type : string|null = null
-
The booster type (see getBoosterTypes()); defaults to the set's play, draft or default booster.
Tags
Return values
PromiseInterface<string|int, ExCollectionInterface<string|int, Card>> —The pack. Not keyed — a pack can hold the same card twice. Never cached.
get()
Gets a part from the repository.
public
get(string $discrim, mixed $key) : Part|null
Parameters
- $discrim : string
- $key : mixed
Return values
Part|nullgetBoosterTypes()
The booster types a set can open (`play`, `draft`, `collector`, …), the one {@see generateBooster()} picks by default first.
public
getBoosterTypes(Set|string $set) : PromiseInterface<string|int, array<string|int, string>>
Parameters
Tags
Return values
PromiseInterface<string|int, array<string|int, string>> —Empty when MTGJSON has no booster data for the set.
getIterator()
Returns an iterator for the cache.
public
& getIterator() : Traversable
Return values
TraversablegetSets()
Searches sets. See {@see SetQuery} for every filter; the common ones are `name` and `block` (partial), `code` and `type` (exact), with `orderBy` (default `-releaseDate`), `page` and `pageSize` (1-100, default 100).
public
getSets([Card|Set|array<string|int, mixed> $params = [] ]) : PromiseInterface<string|int, ExCollectionInterface<string|int, Set>>
Parameters
Tags
Return values
PromiseInterface<string|int, ExCollectionInterface<string|int, Set>> —Keyed by code. Rejects with \InvalidArgumentException on a bad filter.
has()
Checks if the array has an object.
public
has(string|int ...$keys) : bool
Use async $repository->cache->has()
Parameters
- $keys : string|int
Return values
booljsonSerialize()
public
jsonSerialize([bool $assoc = true ]) : array<string|int, mixed>
Parameters
- $assoc : bool = true
Tags
Return values
array<string|int, mixed>keys()
Get the keys of the items.
public
keys() : array<string|int, int>|array<string|int, string>
Return values
array<string|int, int>|array<string|int, string>last()
Returns the last cached part.
public
last() : Part|null
Return values
Part|nulloffsetExists()
If the repository has an offset.
public
offsetExists(string|int $offset) : bool
Use async $repository->cache->has()
This method is deprecated for userland code but can still be used internally within the library.
Parameters
- $offset : string|int
Return values
booloffsetGet()
Gets a part from the repository.
public
offsetGet(string|int $offset) : Part|null
Use async $repository->cacheGet() or sync $repository->get()
This method is deprecated for userland code but can still be used internally within the library.
Parameters
- $offset : string|int
Return values
Part|nulloffsetSet()
Sets a part into the repository.
public
offsetSet(string|int $offset, ?Part $value) : void
Use async $repository->cache->set()
Parameters
- $offset : string|int
- $value : ?Part
offsetUnset()
Unsets an index from the repository.
public
offsetUnset(string|int $offset) : void
Use async $repository->cache->delete()
Parameters
- $offset : string|int
pull()
Pulls a part from the repository.
public
pull(string|int $key[, mixed $default = null ]) : Part|mixed
Use async $repository->cachePull()
Parameters
- $key : string|int
- $default : mixed = null
Return values
Part|mixedpushItem()
Pushes a single item to the repository.
public
pushItem(Part $item) : self
Use async $repository->cache->set()
This method is deprecated for userland code but can still be used internally within the library.
Parameters
- $item : Part
Return values
selfsave()
Attempts to save a part to the Discord servers.
public
save(Part $part[, string|null $reason = null ]) : PromiseInterface<string|int, Part>
Use Part->save($reason) to ensure permissions are checked.
Parameters
- $part : Part
-
The part to save.
- $reason : string|null = null
-
Reason for Audit Log (if supported).
Tags
Return values
PromiseInterface<string|int, Part>set()
Sets a part in the repository.
public
set(string|int $offset, Part $value) : mixed
Parameters
- $offset : string|int
- $value : Part
toArray()
Converts the weak caches to array.
public
toArray([bool $assoc = true ]) : array<string|int, mixed>
Use jsonSerialize
Parameters
- $assoc : bool = true
Return values
array<string|int, mixed>values()
Get the values of the items.
public
values() : array<string|int, mixed>
Return values
array<string|int, mixed>cacheFreshen()
protected
cacheFreshen(object $response) : PromiseInterface<string|int, static>
Parameters
- $response : object
Return values
PromiseInterface<string|int, static>hydrate()
Builds Set parts from decoded `sets` rows, attaching their name translations.
protected
hydrate(array<string|int, array<string|int, mixed>> $rows[, bool $cache = true ]) : ExCollectionInterface<string|int, Set>
Parameters
- $rows : array<string|int, array<string|int, mixed>>
-
Decoded rows.
- $cache : bool = true
-
Whether to cache the parts.
Return values
ExCollectionInterface<string|int, Set> —Keyed by code.
lookup()
protected
lookup(string $id) : ?Set
Parameters
- $id : string