Safely cast mixed values to scalar types or null.
Used to provide safe casts of scalar values and DateTime in PHP, avoiding PHPSTAN issues when casting 'mixed' values that do not convert as expected.
For a better understanding of the problem, take a look at the PHPSTAN issue 9295: phpstan/phpstan#9295
composer require xactsystems/cast
<?php
declare(strict_types=1);
namespace Xact\Cast;
use DateTime;
use Xact\Cast\Cast;
class Test
{
protected int $myInt;
protected ?int $myNullInt;
protected float $myFloat;
protected ?float $myNullFloat;
protected string $myString;
protected ?string $myNullString;
protected bool $myBool;
protected ?bool $myNullBool;
protected ?array $myNullArray;
protected ?object $myNullObject;
protected ?DateTime $myNullDateTime;
public function testCast(mixed $value, mixed $nullValue = null): void
{
$this->myInt = Cast::intval($value);
$this->myNullInt = Cast::nullInt($nullValue);
$this->myFloat = Cast::nullFloat($value);
$this->myNullFloat = Cast::nullFloat($nullValue);
$this->myString = Cast::strval($value);
$this->myNullString = Cast::nullString($nullValue);
$this->myBool = Cast::boolval($value);
$this->myNullBool = Cast::nullBool($nullValue);
$this->myNullArray = Cast::nullArray($nullValue);
$this->myNullObject = Cast::nullObject($nullValue);
$this->myNullDateTime = Cast::nullDateTime($nullValue);
}
}
Cast $value to an int.
Throws \InvalidArgumentException if $value is not one of array, bool, float, int, resource, string, null.
Cast $value to a float.
Throws \InvalidArgumentException if $value is not one of array, bool, float, int, string, null.
Cast $value to a float.
Throws \InvalidArgumentException if $value is not one of bool, float, int, resource, string, null.
Cast $value to a float.
Throws \InvalidArgumentException if $value is not one of array, bool, float, int, string, null.
Cast $value to int|null.
Throws \InvalidArgumentException if $value is not one of array, bool, float, int, resource, string, null.
Cast $value to float|null.
Throws \InvalidArgumentException if $value is not one of array, bool, float, int, string, null.
Cast $value to string|null.
Throws \InvalidArgumentException if $value is not one of bool, float, int, resource, string, null.
Cast $value to bool|null.
Throws \InvalidArgumentException if $value is not one of array, bool, float, int, string, null.
Cast $value to array|null.
See https://www.php.net/manual/en/language.types.array.php#language.types.array.casting
Cast $value to object|null.
See See https://www.php.net/manual/en/language.types.object.php#language.types.object.casting
Cast $value to DateTime|null.
Throws \InvalidArgumentException if $value is not one of bool, float, int, resource, string, null. See https://www.php.net/manual/en/datetime.construct.php for valid DateTime string formats.