Skip to content

Commit

Permalink
Merge pull request #15 from kingsquare/phpstan-level8
Browse files Browse the repository at this point in the history
Phpstan level 8
  • Loading branch information
mishavantol authored Dec 3, 2020
2 parents 4b37872 + af86f29 commit c4bd956
Show file tree
Hide file tree
Showing 10 changed files with 66 additions and 43 deletions.
2 changes: 1 addition & 1 deletion src/CommunibaseId.php
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public static function fromValidString(string $string = null): CommunibaseId

public function __toString(): string
{
return $this->id;
return (string) $this->id;
}

public function toString(): string
Expand Down
16 changes: 12 additions & 4 deletions src/CommunibaseIdCollection.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,18 @@
/**
* @author Kingsquare (source@kingsquare.nl)
* @copyright Copyright (c) Kingsquare BV (http://www.kingsquare.nl)
*
* @implements \IteratorAggregate<CommunibaseId>
*/
class CommunibaseIdCollection implements \Countable, \IteratorAggregate, \JsonSerializable
final class CommunibaseIdCollection implements \Countable, \IteratorAggregate, \JsonSerializable
{
/**
* @var CommunibaseId[]
*/
private $ids;

/**
* @param string[] $strings
* @throws InvalidIdException
*/
private function __construct(array $strings)
Expand All @@ -31,6 +34,7 @@ static function (string $string) {
}

/**
* @param string[] $strings
* @throws InvalidIdException
*/
public static function fromStrings(array $strings): CommunibaseIdCollection
Expand All @@ -40,6 +44,7 @@ public static function fromStrings(array $strings): CommunibaseIdCollection

/**
* Filter out all invalid strings
* @param string[] $strings
*/
public static function fromValidStrings(array $strings): CommunibaseIdCollection
{
Expand Down Expand Up @@ -81,21 +86,24 @@ public function isEmpty(): bool
}

/**
* @return \ArrayIterator|\Traversable|CommunibaseId[]
* @return \ArrayIterator<int, CommunibaseId>
*/
public function getIterator()
public function getIterator(): \ArrayIterator
{
return new \ArrayIterator($this->ids);
}

/**
* @return array|string[]
* @return string[]
*/
public function toStrings(): array
{
return array_map('\strval', $this->ids);
}

/**
* @return array{array{"$ObjectId":string}}
*/
public function toObjectQueryArray(): array
{
return array_reduce(
Expand Down
25 changes: 11 additions & 14 deletions src/Entity/Address.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,10 @@ class Address
*/
protected $dataBag;

protected function __construct(array $addressData = [])
/**
* @param array{'_id'?: string, 'type'?: string, 'property'?: string, 'street'?: string, 'streetNumber'?: string, 'streetNumberAddition'?: string, 'zipcode'?: string, 'city'?: string, 'countryCode'?: string, point?: array{coordinates: array{float, float}}, latitude?: float, longitude?: float} $addressData
*/
final private function __construct(array $addressData = [])
{
$this->dataBag = DataBag::create();
if ($addressData === []) {
Expand All @@ -30,18 +33,15 @@ protected function __construct(array $addressData = [])
$this->dataBag->addEntityData('address', $addressData);
}

/**
* @return static
*/
public static function create()
public static function create(): Address
{
return new static();
}

/**
* @return static
* @param ?array{'_id'?: string, 'type'?: string, 'property'?: string, 'street'?: string, 'streetNumber'?: string, 'streetNumberAddition'?: string, 'zipcode'?: string, 'city'?: string, 'countryCode'?: string, point?: array{coordinates: array{float, float}}, latitude?: float, longitude?: float} $addressData
*/
public static function fromAddressData(array $addressData = null)
public static function fromAddressData(array $addressData = null): Address
{
if ($addressData === null) {
$addressData = [];
Expand Down Expand Up @@ -134,7 +134,7 @@ public function getId(): CommunibaseId
return CommunibaseId::fromString($this->dataBag->get('address._id'));
}

public function __toString()
public function __toString(): string
{
return $this->toString();
}
Expand Down Expand Up @@ -172,7 +172,7 @@ public function toString(bool $singleLine = true): string
}

/**
* @return float[]|null
* @return ?array<float>
*/
public function getGeoLocation(): ?array
{
Expand Down Expand Up @@ -229,9 +229,6 @@ private function isGeoStorageUsingNativePoint(): bool
return !empty($this->dataBag->get('address.point'));
}

/**
* @return bool
*/
public function isEmpty(): bool
{
return empty(
Expand All @@ -256,7 +253,7 @@ public function __clone()
}

/**
* @return array|null
* @return ?array{'_id'?: string, 'type'?: string, 'property'?: string, 'street'?: string, 'streetNumber'?: string, 'streetNumberAddition'?: string, 'zipcode'?: string, 'city'?: string, 'countryCode'?: string, point?: array{coordinates: array{float, float}}, latitude?: float, longitude?: float}
*/
public function getState(): ?array
{
Expand All @@ -269,7 +266,7 @@ public function getState(): ?array
/**
* @throws InvalidGeoLocationException
*/
protected function guardAgainstInvalidLatLong(float $latitude, float $longitude): void
private function guardAgainstInvalidLatLong(float $latitude, float $longitude): void
{
if ($latitude < -90 || $latitude > 90 || $longitude < -180 || $longitude > 180) {
throw new InvalidGeoLocationException(
Expand Down
22 changes: 11 additions & 11 deletions src/Entity/Email.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@ class Email
*/
protected $dataBag;

protected function __construct(array $emailAddressData = [])
/**
* @param array{'_id'?: string, 'type'?: string, 'emailAddress'?: string} $emailAddressData
*/
final private function __construct(array $emailAddressData = [])
{
if (empty($emailAddressData['type'])) {
$emailAddressData['type'] = 'private';
Expand All @@ -28,29 +31,23 @@ protected function __construct(array $emailAddressData = [])
$this->dataBag->addEntityData('email', $emailAddressData);
}

/**
* @return static
*/
public static function create()
public static function create(): Email
{
return new static();
}

/**
* @return static
* @param ?array{'_id'?: string, 'type'?: string, 'emailAddress'?: string} $emailAddressData
*/
public static function fromEmailAddressData(array $emailAddressData = null)
public static function fromEmailAddressData(array $emailAddressData = null): Email
{
if ($emailAddressData === null) {
$emailAddressData = [];
}
return new static($emailAddressData);
}

/**
* @return static
*/
public static function fromEmailAddress(string $emailAddress)
public static function fromEmailAddress(string $emailAddress): Email
{
return static::fromEmailAddressData(
[
Expand Down Expand Up @@ -88,6 +85,9 @@ public function __clone()
}
}

/**
* @return ?array{'_id'?: string, 'type'?: string, 'emailAddress'?: string}
*/
public function getState(): ?array
{
if (empty($this->getEmailAddress())) {
Expand Down
25 changes: 14 additions & 11 deletions src/Entity/PhoneNumber.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,15 @@ class PhoneNumber
*/
protected $dataBag;

/**
* @var PhoneNumberUtil
*/
private static $phoneNumberUtil;

protected function __construct(array $phoneNumberData = [])
/**
* @param array{'_id'?: string, 'type'?: string, 'areaCode'?: string|int, 'countryCode'?: string|int, 'subscriberNumber'?: string|int} $phoneNumberData
*/
final private function __construct(array $phoneNumberData = [])
{
$this->dataBag = DataBag::create();
if (empty($phoneNumberData['type'])) {
Expand All @@ -31,26 +37,20 @@ protected function __construct(array $phoneNumberData = [])
self::$phoneNumberUtil = self::$phoneNumberUtil ?? PhoneNumberUtil::getInstance();
}

/**
* @return static
*/
public static function create()
public static function create(): PhoneNumber
{
return new static();
}

/**
* @return static
* @param ?array{'_id'?: string, 'type'?: string, 'areaCode'?: string|int, 'countryCode'?: string|int, 'subscriberNumber'?: string|int} $phoneNumberData
*/
public static function fromPhoneNumberData(array $phoneNumberData = null)
public static function fromPhoneNumberData(array $phoneNumberData = null): PhoneNumber
{
return new static($phoneNumberData ?? []);
}

/**
* @return static
*/
public static function fromString(string $phoneNumberString)
public static function fromString(string $phoneNumberString): PhoneNumber
{
$phoneNumber = static::create();
$phoneNumber->setPhoneNumber($phoneNumberString);
Expand Down Expand Up @@ -151,6 +151,9 @@ public function __clone()
}
}

/**
* @return ?array{'_id'?: string, 'type'?: string, 'areaCode'?: string|int, 'countryCode'?: string|int, 'subscriberNumber'?: string|int}
*/
public function getState(): ?array
{
if (!array_filter([$this->dataBag->get('phone.areaCode'), $this->dataBag->get('phone.subscriberNumber')])) {
Expand Down
2 changes: 1 addition & 1 deletion src/Exception/InvalidGeoLocationException.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
* @author Kingsquare (source@kingsquare.nl)
* @copyright Copyright (c) Kingsquare BV (http://www.kingsquare.nl)
*/
class InvalidGeoLocationException extends \Exception
final class InvalidGeoLocationException extends \Exception
{
}
2 changes: 1 addition & 1 deletion src/Exception/InvalidIdException.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
* @author Kingsquare (source@kingsquare.nl)
* @copyright Copyright (c) Kingsquare BV (http://www.kingsquare.nl)
*/
class InvalidIdException extends \Exception
final class InvalidIdException extends \Exception
{
}
3 changes: 3 additions & 0 deletions tests/CommunibaseIdTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ public function test_it_can_be_created_from_a_valid_string(): void
self::assertEquals(self::VALID_ID_STRING, $id->toString());
}

/**
* @return array<string, array<string>>
*/
public function invalidStringSources(): array
{
return [
Expand Down
6 changes: 6 additions & 0 deletions tests/Entity/AddressTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ public function test_setters(string $property, string $value): void
self::assertSame($value, $address->{'get' . $property}());
}

/**
* @return array<array<string>>
*/
public function setSetterProvider(): array
{
return [
Expand Down Expand Up @@ -188,6 +191,9 @@ public function test_can_set_geolocation_using_point(): void
);
}

/**
* @return array<array<float, float>>
*/
public function invalidGeolocationProvider(): array
{
return [
Expand Down
6 changes: 6 additions & 0 deletions tests/Entity/PhoneNumberTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
*/
class PhoneNumberTest extends TestCase
{
/**
* @return array<string, array<string>>
*/
public function dataProvider(): array
{
return [
Expand Down Expand Up @@ -61,6 +64,9 @@ public function testExplodePhoneNumber(
self::assertSame($expected, $phoneNumber->getState());
}

/**
* @return array<string, array<string|null>>
*/
public function provider(): array
{
return [
Expand Down

0 comments on commit c4bd956

Please sign in to comment.