DiscordPHP-MTG Documentation

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
link

Set model

Booster models

since
0.3.0

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
inheritDoc

$endpoints

MTGJSON has no per-set route that fits in memory; see {@see DatabaseRepositoryTrait}.

protected mixed $endpoints = []
Tags
inheritDoc

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
throws
BadMethodCallException

If the method does not exist.

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.

countDecks()

How many preconstructed decks MTGJSON has for a set.

public countDecks(Set|string $set) : PromiseInterface<string|int, int>
Parameters
$set : Set|string

A Set or a set code.

Tags
since
1.1.0
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
since
1.1.0
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
throws
Exception
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
throws
Exception
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
todo

This method will be typed to return an ExCollectionInterface in v11

Return values
ExCollectionInterface

find()

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.

fresh()

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
link
https://mtgjson.com/data-models/booster/
since
0.10.1
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|null

getBoosterTypes()

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
$set : Set|string

A Set or a set code (e.g. "KTK").

Tags
since
1.0.0
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
Traversable

getSets()

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
$params : Card|Set|array<string|int, mixed> = []

Filters, or the Card or Set whose set to find.

Tags
since
0.5.0
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
bool

jsonSerialize()

public jsonSerialize([bool $assoc = true ]) : array<string|int, mixed>
Parameters
$assoc : bool = true
Tags
inheritDoc
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>

offsetExists()

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
bool

offsetGet()

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|null

offsetSet()

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|mixed

pushItem()

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
self

save()

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
throws
Exception
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
Tags
inheritDoc
Return values
?Set
On this page

Search results