安全地将PHP混合类型值转换为标量类型或null。

v1.0.0 2024-08-29 12:31 UTC

This package is auto-updated.

Last update: 2024-09-29 12:46:23 UTC


README

安全地将混合值转换为标量类型或null。

用于在PHP中提供安全转换标量值和DateTime,避免在将'mixed'值转换为预期不转换时出现PHPSTAN问题。

为了更好地理解问题,请查看PHPSTAN问题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);
    }
}

方法

static Cast::intval(mixed $value): int

将$value转换为int。

如果$value不是数组、bool、float、int、resource、string或null之一,则抛出\InvalidArgumentException。

static floatval(mixed $value): float

将$value转换为float。

如果$value不是数组、bool、float、int、string或null之一,则抛出\InvalidArgumentException。

static strval(mixed $value): string

将$value转换为float。

如果$value不是bool、float、int、resource、string或null之一,则抛出\InvalidArgumentException。

static boolval(mixed $value): bool

将$value转换为float。

如果$value不是数组、bool、float、int、string或null之一,则抛出\InvalidArgumentException。

static nullInt(mixed $value): ?int

将$value转换为int|null。

如果$value不是数组、bool、float、int、resource、string或null之一,则抛出\InvalidArgumentException。

static nullFloat(mixed $value): ?float

将$value转换为float|null。

如果$value不是数组、bool、float、int、string或null之一,则抛出\InvalidArgumentException。

static nullString(mixed $value): ?string

将$value转换为string|null。

如果$value不是bool、float、int、resource、string或null之一,则抛出\InvalidArgumentException。

static nullBool(mixed $value): ?bool

将$value转换为bool|null。

如果$value不是数组、bool、float、int、string或null之一,则抛出\InvalidArgumentException。

static nullArray(mixed $value): ?array

将$value转换为array|null。

https://php.ac.cn/manual/en/language.types.array.php#language.types.array.casting

static nullObject(mixed $value): ?object

将$value转换为object|null。

https://php.ac.cn/manual/en/language.types.object.php#language.types.object.casting

static nullDateTime(mixed $value): ?DateTime

将$value转换为DateTime|null。

如果$value不是bool、float、int、resource、string或null之一,则抛出\InvalidArgumentException。有关有效的DateTime字符串格式,请参阅https://php.ac.cn/manual/en/datetime.construct.php