2017 © Pedro PelĂĄez
 

library types

Basic type classes wrapping scalar values to create types in applications.

image

fortuneglobe/types

Basic type classes wrapping scalar values to create types in applications.

  • Monday, November 13, 2017
  • by hollodotme
  • Repository
  • 5 Watchers
  • 0 Stars
  • 201 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 8 Versions
  • 109 % Grown

The README.md

Types

CircleCI Last Commit Dependencies Latest release Code Coverage, (*1)

Beschreibung

Basistypen, die skalare Typen, aber wie bei DateType auch andere Typen aus der PHP Bibliothek wrappen, um Typen in Anwendungen zu erstellen., (*2)

FĂŒr jeden Typen (ausgenommen Uuid4) gibt es ein Interface und einen Trait, welcher bereits die meisten Interface-Methoden implementiert., (*3)

Die Typen können auch von den abstrakten Klassen abgeleitet werden. Diese implementieren alle Interface-Methoden und stellen zu dem eine automatische Validierung bereit., (*4)

Die abstrakten Klassen sind immutable., (*5)

Bis auf AbstractDateType haben alle abstrakten Typ Klassen eine transform Methode, welche im Konstruktor nach der Validierung (durch isValid) aufgerufen wird. Diese Methode verĂ€ndert den Wert standardmĂ€ĂŸig nicht. Sie kann vollstĂ€ndig ĂŒberschrieben werden, falls der Wert verĂ€ndert werden soll., (*6)

Anwendungsbeispiele

Strings

class ClientId extends AbstractStringType
{
    public static function isValid( string $value ): bool
    {
        return $value !== '';
    }
}
class ChannelId extends AbstractStringType
{
    public static function isValid( string $value ): bool
    {
        return $value !== '';
    }
}
$clientId           = new ClientId( 'gmo' );
$anotherClientId    = new ClientId( 'gmo' );
$yetAnotherClientId = new ClientId( 'maerz' );
$channelId          = new ChannelId( 'gmo' );
$anotherChannelId   = new ChannelId( 'zalando' );

$clientId->equals( $anotherClientId ) //true
$clientId->equals( $yetAnotherClientId ) //false
$clientId->equals( $channelId ) //false
$clientId->equalsValue( $channelId ) //true
$clientId->equalsValue( 'gmo' ) //true

$newClientId = ClientId::fromStringType( $anotherChannelId );
get_class( $newClientId ); //ClientId
$newClientId->toString(); //zalando
(string)$newClientId; //zalando

Integers

class Quantity extends AbstractStringType
{
    public static function isValid( int $value ): bool
    {
        return $value > 0;
    }
}
$quantityOfFirstItem  = new Quantity( 2 );
$quantityOfSecondItem = new Quantity( 5 );

$totalQuantity = $quantityOfFirstItem->add( $quantityOfSecondItem ); //7
$difference    = $quantityOfFirstItem->subtract( $quantityOfSecondItem ); //throws ValidationException
$difference    = $quantityOfSecondItem->subtract( $quantityOfFirstItem ); //3

$incrementedQuantity = $quantityOfFirstItem->increment( $quantityOfSecondItem ); //7

Man kann auch mit primitiven Datentypen rechnen., (*7)

$quantity  = new Quantity( 2 );

$totalQuantity = $quantity->add( 5 ); //7
$difference    = $quantity->subtract( 5 ); //-3

$incrementedQuantity = $quantity->increment( 10 ); //12

Eigene Uuid4-Typen

class FulfillmentId extends Uuid4
{
}

$fulfillmentId        = FulfillmentId::generate(); //some UUID4
$anotherFulfillmentId = new FulfillmentId( '9b856c0e-610a-4e38-9ea6-b9ac63cfb521' ); 

Uuid4

$uuid4 = (string)Uuid4::generate();

Additional methods provided by trait RepresentingStringType and so also by AbstractStringType

  • getLength
  • contains
  • split
  • splitRaw
  • matchRegularExpression

Additional methods provided by AbstractStringType

  • trim
  • replace
  • substring
  • toLowerCase
  • toUpperCase
  • capitalizeFirst
  • deCapitalizeFirst
  • toKebabCase
  • toSnakeCase
  • toUpperCamelCase
  • toLowerCamelCase

DateType

class UpdatedOn extends AbstractDateType
{
    public static function isValid( \DateTimeInterface $value ): bool
    {
        return true;
    }
}

$updatedOn = new UpdatedOn('2023-07-07 08:01:20', new \DateTimeZone( '+0200' ) ))->toString() ); //some UUID4
$updatedOn->hasExpired(); //Checks if current date time is greater than date time of UpdatedOn. Returns boolean
$updatedOn->hasExpired( new \DateInterval('PT15M') ); //Checks if current date time is greater than date time of UpdatedOn and added \DateInterval. Returns boolean

RepresentsDateType extends following interfaces

  • \Stringable
  • \JsonSerializable

Methods provided by RepresentsDateType

  • equals
  • equalsValue
  • toDateTime
  • sub
  • add
  • diff
  • isLessThan
  • isGreaterThan
  • isGreaterThanOrEqual
  • isLessThanOrEqual
  • hasExpired
  • format
  • getOffset
  • getTimestamp
  • getTimezone
  • toString

Helpers

TypesToArrayHelper kann benutzt werden, um aus Arrays, bestehend aus StringTypes, FloatTypes, IntTypes oder ArrayTypes, Arrays mit primitiven Datentypen zu bauen., (*8)

Beispiel:, (*9)

$types = [
    new AnyStringType( 'one' ),
    new AnyStringType( 'two' ),
    new AnotherStringType( 'three' ),
];

TypesToArrayHelper::toStringArray( $types ); // [ 'one', 'two', 'three' ]

Json

Alle Typen implementieren \JsonSerializable und können damit mit json_encode serialisiert werden., (*10)

The Versions

13/11 2017

dev-development

dev-development

Basic type classes wrapping scalar values to create types in applications.

  Sources   Download

proprietary

The Requires

  • php >=7.1

 

The Development Requires

by Benjamin Bruska

13/11 2017

dev-master

9999999-dev

Basic type classes wrapping scalar values to create types in applications.

  Sources   Download

proprietary

The Requires

  • php >=7.1

 

The Development Requires

by Benjamin Bruska

13/11 2017

v1.0.0

1.0.0.0

Basic type classes wrapping scalar values to create types in applications.

  Sources   Download

proprietary

The Requires

  • php >=7.1

 

The Development Requires

by Benjamin Bruska

30/10 2017

v0.9.1

0.9.1.0

Basic type classes wrapping scalar values to create types in applications.

  Sources   Download

proprietary

The Requires

  • php >=7.1

 

The Development Requires

by Benjamin Bruska

26/10 2017

v0.9.0

0.9.0.0

Identifier

  Sources   Download

proprietary

The Requires

  • php >=7.1

 

The Development Requires

by Benjamin Bruska

23/10 2017

v0.2.0-alpha

0.2.0.0-alpha

Identifier

  Sources   Download

proprietary

The Requires

  • php >=7.1

 

The Development Requires

by Benjamin Bruska

23/10 2017

v0.1.1-alpha

0.1.1.0-alpha

Identifier

  Sources   Download

proprietary

The Requires

  • php >=7.1

 

The Development Requires

by Benjamin Bruska

23/10 2017

v0.1.0-alpha

0.1.0.0-alpha

Identifier

  Sources   Download

proprietary

The Requires

  • php >=7.1

 

The Development Requires

by Benjamin Bruska