<?php

if (!function_exists('str_contains')) {
    /**
     * Polyfill for PHP < 8.0.
     *
     * @param string $haystack
     * @param string $needle
     *
     * @return bool
     */
    function str_contains($haystack, $needle)
    {
        if ('' === $needle) {
            return true;
        }

        return false !== strpos($haystack, $needle);
    }
}

if (!function_exists('str_starts_with')) {
    /**
     * Polyfill for PHP < 8.0.
     *
     * @param string $haystack
     * @param string $needle
     *
     * @return bool
     */
    function str_starts_with($haystack, $needle)
    {
        if ('' === $needle) {
            return true;
        }

        return 0 === strpos($haystack, $needle);
    }
}

if (!function_exists('get_debug_type')) {
    /**
     * Lightweight polyfill for PHP < 8.0.
     *
     * @param mixed $value
     *
     * @return string
     */
    function get_debug_type($value)
    {
        if (null === $value) {
            return 'null';
        }

        if (is_bool($value)) {
            return 'bool';
        }

        if (is_string($value)) {
            return 'string';
        }

        if (is_int($value)) {
            return 'int';
        }

        if (is_float($value)) {
            return 'float';
        }

        if (is_array($value)) {
            return 'array';
        }

        if (is_object($value)) {
            return get_class($value);
        }

        if (is_resource($value)) {
            return 'resource (' . get_resource_type($value) . ')';
        }

        return gettype($value);
    }
}
