Nápověda pro vývojáře
Jednou z charakteristik STM je snadná integrace na web. Existuje hned několik cest, jak se dostat k ukázkám takové integrace:
- WebAPI lze použít pro integraci STM na Váš web.
- V sekci Šablony si můžete prohlédnout i stáhnout kódy pro zobrazování různých objektů na vašem webu.
- V aplikaci STM je dostupný modul Export, kde si můžete vygenerovat PHP kódy pro vaše konkrétní data.
Cache - aneb ne pokaždé je třeba přistupovat do databáze
Výpočty tabulek sezóny, různých statistik nejsou žádné primitivní záležitosti. Proto není zrovna ideální takové výpočty provádět u každého požadavku, tedy při každé návštěvě webu. Třída STM\StmCache nabízí možnost přístupu k tabulkám, statistikám, které budou načteny z cache souboru, pokud mezitím nedošlo v databázi k nějaké změně. Statické metody této třídy:
Metoda | Základní popis |
---|---|
StmCache::getAllCompetitionMatches($competition) | Všechny zápasy z dané soutěže |
StmCache::getCompetitionPlayerStatistics($competition) | Hráčské statistiky (góly, počet odehraných zápasů, ...) z dané soutěže |
StmCache::getSeasonTable($season) | Tabulky ze sezóny (celková, domácí, hosté) |
StmCache::getTeamsPositionsInTable($season) | Vývoj postavení týmů v tabulce sezóny po jednotlivých kolech |
StmCache::getStatisticsForTeam($team) | Statistiky týmu jako nejvyšší výhry, prohry, seznam odehraných zápasů, ... |
StmCache::getStatisticsForTeamInCompetition($competition, $team) | Statistiky týmu v rámci zvolené soutěže |
StmCache::getTeamMatchesStatistics($selection, $team, $file) | Statistiky pro zvolené zápasy přes MatchSelection |
StmCache::getUpcomingMatchPreview($team) | Informace o nadcházejícím zápase týmů obsahující vzájemné zápasy, poslední zápasy, ... |
STM\STMFactory - prostředek pro získávání dat z STM databáze
Ve verzi 2.0 došlo ke sjednocení načítání dat z DB. Ke každému objektu, který reprezentuje např. nějakou databázovou tabulku, existuje Selection třída pro definici WHERE podmínek k omezení načítaných dat. Selection třídu pak používá Factory každého objektu. Díky STM\StmFactory nemusíte o těchto třídách nic vědět.
StmFactory poskytuje přístup ke všem dostupným Factory v STM (k vytvoření konkrétní Factory dojde až při prvním požadavku). Obsahuje dvě základní metody find a count, které poskytují přístup k Factory, které buď načtou objekty nebo pouze spočítá počet řádků v databázi. Viz následující ukázka:
// nalezení všech soutěží $competitions = \STM\StmFactory->find()->Competition->findAll(); // spočítání počtu členů týmů $teamMembersCount = \STM\StmFactory->count()->TeamMember->findByTeam($team);
Asi nemá smysl vypisovat všechny dostupné Factory metody. Stačí vždy mrknout do API na potomky abstraktní Factory a vždy si vybrat, co potřebuji. Pokud byste chtěli podronější dokumentaci, tak se ozvěte do komentářů.
Pouze výběr zápasů je vzhledem k všemožným podmínkám trochu složitější. Proto připojuji příklad kompletního "konfiguračního" pole pro výběr zápasů:
$matchSelection = array( 'matchType' => \STM\Match\MatchSelection::PLAYED_MATCHES, 'loadScores' => false, 'loadPeriods' => false, 'competition' => 12, 'teams' => array(1, 2, 3, 5), 'headToHead' => false, 'yourTeamsOnly' => false, //'seasonRound' => 5, //'seasonMaxRound' => 6, //'serie' => \STM\StmFactory::find()->PlayoffSerie->findById(1), 'dates' => array('min' => 'now - 2 years', 'max' => 'now'), 'limit' => array('max' => 5, 'offset' => 0), 'order' => array( //'orderType' => $isAscending 'datetime' => true, 'round' => true, 'idMatch' => true, ) ); \STM\StmFactory::find()->Match->find($matchSelection);
V příkladu se budou načítat pouze odehrané zápasy ze soutěže s ID = 12, ve kterých byl alespoň jeden z týmů s uvedenými ID. Podmínky pro kola sezóny ani série playoff nejsou aplikovány. Bude načteno prvních 5 zápasů, které byly odehrány během posledních 2 let. Pořadí bude vzestupně podle data a v případě shody dat se poté bude řadit podle čísla kola a nakonec id zápasu.
Doufám, že se mi na příkladu podařil objasnit princip načítání zápasu. V případě dotazů, připomínek se neváhejte ozvat! Jedná se o takový stručný výtah, protože nevím, co přesně a jak do podrobna bych měl popisovat.