norse-blue/php-scalar-objects

View on GitHub
src/Extensions/String/StringExplodeExtension.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

declare(strict_types=1);

namespace NorseBlue\ScalarObjects\Extensions\String;

use NorseBlue\ExtensibleObjects\Contracts\ExtensionMethod;
use NorseBlue\ScalarObjects\Types\IntType;
use NorseBlue\ScalarObjects\Types\StringType;

final class StringExplodeExtension extends StringType implements ExtensionMethod
{
    /**
     * @return callable(string|StringType $delimiter, int|IntType|null $limit = null): array
     */
    public function __invoke(): callable
    {
        /**
         * Explode the string into an array.
         *
         * @param string|StringType $delimiter
         * @param int|IntType|null $limit
         */
        return function ($delimiter, $limit = PHP_INT_MAX): array {
            return explode($delimiter, $this->value, IntType::unwrap($limit));
        };
    }
}