PHP Classes

File: src/Create.php

Recommend this page to a friend!
  Classes of Lars Moelleken   Arrayy   src/Create.php   Download  
File: src/Create.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Arrayy
Manipulate arrays using a fluent interface
Author: By
Last change: Merge pull request #128 from voku/renovate/actions-cache-3.x

Update actions/cache action to v3.3.1
Date: 10 months ago
Size: 3,736 bytes
 

Contents

Class file image Download
<?php

declare(strict_types=1);

namespace {
    if (\
PHP_VERSION_ID < 70300) {
        if (!\
function_exists('is_countable')) {
           
/**
             * @param mixed $var
             *
             * @return bool
             */
           
function is_countable($var)
            {
                return \
is_array($var)
                       ||
                      
$var instanceof SimpleXMLElement
                      
||
                      
$var instanceof Countable
                      
||
                      
$var instanceof ResourceBundle;
            }
        }

        if (!\
function_exists('array_key_first')) {
           
/**
             * @param array<mixed> $array
             *
             * @return int|string|null
             */
           
function array_key_first(array $array)
            {
                foreach (
$array as $key => $value) {
                    return
$key;
                }

                return
null;
            }
        }

        if (!\
function_exists('array_key_last')) {
           
/**
             * @param array<mixed> $array
             *
             * @return int|string|null
             */
           
function array_key_last(array $array)
            {
                if (\
count($array) === 0) {
                    return
null;
                }

                return \
array_keys(
                    \
array_slice($array, -1, 1, true)
                )[
0];
            }
        }
    }
}

namespace
Arrayy {
    use
Arrayy\Collection\Collection;
    use
Arrayy\TypeCheck\TypeCheckArray;
    use
Arrayy\TypeCheck\TypeCheckInterface;

    if (!\
function_exists('Arrayy\create')) {
       
/**
         * Creates a Arrayy object.
         *
         * @param mixed $data
         *
         * @return Arrayy<int|string,mixed>
         */
       
function create($data): Arrayy
       
{
            return new
Arrayy($data);
        }
    }

    if (!\
function_exists('Arrayy\collection')) {
       
/**
         * Creates a Collection object.
         *
         * @param string|TypeCheckArray|TypeCheckInterface[] $type
         * @param array<mixed> $data
         *
         * @return Collection
         *
         * @template T
         * @phpstan-param T $type
         * @phpstan-return Collection<array-key,T>
         */
       
function collection($type, $data = []): Collection
       
{
           
/** @phpstan-var Collection<array-key,T> */
           
return Collection::construct($type, $data);
        }
    }

   
/**
     * @param array<mixed> $array
     * @param mixed $fallback <p>This fallback will be used, if the array is empty.</p>
     *
     * @return mixed|null
     *
     * @template TLast
     * @template TLastFallback
     * @phpstan-param TLast[] $array
     * @phpstan-param TLastFallback $fallback
     * @phpstan-return TLast|TLastFallback
     */
   
function array_last(array $array, $fallback = null)
    {
       
$key_last = \array_key_last($array);
        if (
$key_last === null) {
            return
$fallback;
        }

        return
$array[$key_last];
    }

   
/**
     * @param array<mixed> $array
     * @param mixed $fallback <p>This fallback will be used, if the array is empty.</p>
     *
     * @return mixed|null
     *
     * @template TFirst
     * @template TFirstFallback
     * @phpstan-param TFirst[] $array
     * @phpstan-param TFirstFallback $fallback
     * @phpstan-return TFirst|TFirstFallback
     */
   
function array_first(array $array, $fallback = null)
    {
       
$key_first = \array_key_first($array);
        if (
$key_first === null) {
            return
$fallback;
        }

        return
$array[$key_first];
    }
}