Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PHPStan level 7 #52

Merged
merged 3 commits into from
May 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
[![Build](https://github.com/nkl-kst/the-sports-db/workflows/Build/badge.svg)](https://github.com/nkl-kst/the-sports-db/actions)
[![Packagist Version](https://img.shields.io/packagist/v/nkl-kst/the-sports-db)](https://packagist.org/packages/nkl-kst/the-sports-db)
[![Coverage Status](https://coveralls.io/repos/github/nkl-kst/the-sports-db/badge.svg?branch=master)](https://coveralls.io/github/nkl-kst/the-sports-db?branch=master)
[![PHPStan Level](https://img.shields.io/badge/PHPStan-level%206-brightgreen.svg?style=flat)](https://github.com/nkl-kst/the-sports-db/actions)
[![PHPStan Level](https://img.shields.io/badge/PHPStan-level%207-brightgreen.svg?style=flat)](https://github.com/nkl-kst/the-sports-db/actions)
[![GitHub](https://img.shields.io/github/license/nkl-kst/the-sports-db)](https://github.com/nkl-kst/the-sports-db/blob/master/LICENSE.md)

An easy-to-use PHP library to get data from https://www.thesportsdb.com.
Expand Down
2 changes: 1 addition & 1 deletion phpstan.neon
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
parameters:
level: 6
level: 7
paths:
- src
- test
6 changes: 5 additions & 1 deletion src/Client/Endpoint/AbstractEndpoint.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,11 @@ protected function request(): string
}

/**
* @param object[] $entities
* @template TObject of object
*
* @param TObject[] $entities
*
* @return ?TObject
*/
protected function getSingleEntity(array $entities): ?object
{
Expand Down
5 changes: 4 additions & 1 deletion src/Serializer/AbstractSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
use Exception;
use JsonMapper;

/**
* @template TObject of object
*/
abstract class AbstractSerializer
{
protected JsonMapper $mapper;
Expand Down Expand Up @@ -57,7 +60,7 @@ private function validate(?object $json): ?string
}

/**
* @return object[]
* @return TObject[]
*
* @throws Exception
*/
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/CountrySerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

use NklKst\TheSportsDb\Entity\Country;

/**
* @extends AbstractSerializer<Country>
*/
class CountrySerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/EquipmentSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

use NklKst\TheSportsDb\Entity\Equipment;

/**
* @extends AbstractSerializer<Equipment>
*/
class EquipmentSerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/Event/EventSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
use NklKst\TheSportsDb\Entity\Event\Event;
use NklKst\TheSportsDb\Serializer\AbstractSerializer;

/**
* @extends AbstractSerializer<Event>
*/
class EventSerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/Event/HighlightSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
use NklKst\TheSportsDb\Entity\Event\Highlight;
use NklKst\TheSportsDb\Serializer\AbstractSerializer;

/**
* @extends AbstractSerializer<Highlight>
*/
class HighlightSerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/Event/LineupSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
use NklKst\TheSportsDb\Entity\Event\Lineup;
use NklKst\TheSportsDb\Serializer\AbstractSerializer;

/**
* @extends AbstractSerializer<Lineup>
*/
class LineupSerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/Event/LivescoreSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
use NklKst\TheSportsDb\Entity\Event\Livescore;
use NklKst\TheSportsDb\Serializer\AbstractSerializer;

/**
* @extends AbstractSerializer<Livescore>
*/
class LivescoreSerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/Event/ResultSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
use NklKst\TheSportsDb\Entity\Event\Result;
use NklKst\TheSportsDb\Serializer\AbstractSerializer;

/**
* @extends AbstractSerializer<Result>
*/
class ResultSerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/Event/StatisticSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
use NklKst\TheSportsDb\Entity\Event\Statistic;
use NklKst\TheSportsDb\Serializer\AbstractSerializer;

/**
* @extends AbstractSerializer<Statistic>
*/
class StatisticSerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/Event/TelevisionSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
use NklKst\TheSportsDb\Entity\Event\Television;
use NklKst\TheSportsDb\Serializer\AbstractSerializer;

/**
* @extends AbstractSerializer<Television>
*/
class TelevisionSerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/Event/TimelineSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
use NklKst\TheSportsDb\Entity\Event\Timeline;
use NklKst\TheSportsDb\Serializer\AbstractSerializer;

/**
* @extends AbstractSerializer<Timeline>
*/
class TimelineSerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/LeagueSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

use NklKst\TheSportsDb\Entity\League;

/**
* @extends AbstractSerializer<League>
*/
class LeagueSerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/LoveSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

use NklKst\TheSportsDb\Entity\Love;

/**
* @extends AbstractSerializer<Love>
*/
class LoveSerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/Player/ContractSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
use NklKst\TheSportsDb\Entity\Player\Contract;
use NklKst\TheSportsDb\Serializer\AbstractSerializer;

/**
* @extends AbstractSerializer<Contract>
*/
class ContractSerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/Player/FormerTeamSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
use NklKst\TheSportsDb\Entity\Player\FormerTeam;
use NklKst\TheSportsDb\Serializer\AbstractSerializer;

/**
* @extends AbstractSerializer<FormerTeam>
*/
class FormerTeamSerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/Player/HonourSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
use NklKst\TheSportsDb\Entity\Player\Honour;
use NklKst\TheSportsDb\Serializer\AbstractSerializer;

/**
* @extends AbstractSerializer<Honour>
*/
class HonourSerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/Player/PlayerSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
use NklKst\TheSportsDb\Entity\Player\Player;
use NklKst\TheSportsDb\Serializer\AbstractSerializer;

/**
* @extends AbstractSerializer<Player>
*/
class PlayerSerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/SeasonSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

use NklKst\TheSportsDb\Entity\Season;

/**
* @extends AbstractSerializer<Season>
*/
class SeasonSerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
2 changes: 1 addition & 1 deletion src/Serializer/Serializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ public function serializeHighlights(string $content): array
*/
public function serializeHonors(string $content): array
{
return $this->honorSerializer->serialize($content);
return $this->honorSerializer->serialize($content); // @phpstan-ignore-line
}

/**
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/SportSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

use NklKst\TheSportsDb\Entity\Sport;

/**
* @extends AbstractSerializer<Sport>
*/
class SportSerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/Table/EntrySerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
use NklKst\TheSportsDb\Entity\Table\Entry;
use NklKst\TheSportsDb\Serializer\AbstractSerializer;

/**
* @extends AbstractSerializer<Entry>
*/
class EntrySerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
3 changes: 3 additions & 0 deletions src/Serializer/TeamSerializer.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

use NklKst\TheSportsDb\Entity\Team;

/**
* @extends AbstractSerializer<Team>
*/
class TeamSerializer extends AbstractSerializer
{
protected function getEntityClass(): string
Expand Down
31 changes: 17 additions & 14 deletions test/unit/Util/TestUtils.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,10 @@ public static function getHiddenProperty(object $object, string $property)
$ref = new ReflectionObject($object);

try {
$prop = $ref->hasProperty($property) ?
$ref->getProperty($property) :
$ref->getParentClass()->getProperty($property);
$prop = $ref->hasProperty($property) ? $ref->getProperty($property) : null;
if (!$prop && $ref->getParentClass()) {
$prop = $ref->getParentClass()->getProperty($property);
}
} catch (ReflectionException $e) {
return null;
}
Expand All @@ -51,8 +52,8 @@ public static function getHiddenProperty(object $object, string $property)
}

/**
* @param string $class Class to get static property from
* @param string $property Property to get
* @param class-string $class Class to get static property from
* @param string $property Property to get
*
* @return mixed|null
*/
Expand All @@ -66,9 +67,9 @@ public static function getHiddenStaticProperty(string $class, string $property)
}

/**
* @param string $class Class to set static property
* @param string $property Property to change
* @param mixed $value Value to set
* @param class-string $class Class to set static property
* @param string $property Property to change
* @param mixed $value Value to set
*/
public static function setHiddenStaticProperty(string $class, string $property, $value): void
{
Expand All @@ -90,9 +91,10 @@ public static function getHiddenMethod(object $object, string $method): ?Closure
$ref = new ReflectionObject($object);

try {
$meth = $ref->hasMethod($method) ?
$ref->getMethod($method) :
$ref->getParentClass()->getMethod($method);
$meth = $ref->hasMethod($method) ? $ref->getMethod($method) : null;
if (!$meth && $ref->getParentClass()) {
$meth = $ref->getParentClass()->getMethod($method);
}
} catch (ReflectionException $e) {
return null;
}
Expand All @@ -102,8 +104,8 @@ public static function getHiddenMethod(object $object, string $method): ?Closure
}

/**
* @param string $class Class to get static method from
* @param string $method Method to get
* @param class-string $class Class to get static method from
* @param string $method Method to get
*/
public static function getHiddenStaticMethod(string $class, string $method): ?Closure
{
Expand Down Expand Up @@ -134,6 +136,7 @@ public static function assertThatAllPropertiesAreInitialized($objects): void
// Check all objects
foreach ($objects as $object) {
$class = get_class($object);
assert(is_string($class));

// Get properties by class name, because get_object_vars() doesn't return uninitialized properties
$properties = array_keys(get_class_vars($class));
Expand Down Expand Up @@ -161,6 +164,6 @@ public static function assertThatAllPropertiesAreInitialized($objects): void
*/
public static function setPatreonKey(Client $client): void
{
$client->configure()->setKey(getenv('PATREON_KEY'));
$client->configure()->setKey(strval(getenv('PATREON_KEY')));
}
}