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.