Вход Регистрация
Файл: vendor/nette/utils/src/Utils/Helpers.php
Строк: 97
<?php

/**
 * This file is part of the Nette Framework (https://nette.org)
 * Copyright (c) 2004 David Grudl (https://davidgrudl.com)
 */

declare(strict_types=1);

namespace 
NetteUtils;

use 
Nette;


class 
Helpers
{
    
/**
     * Executes a callback and returns the captured output as a string.
     */
    
public static function capture(callable $func): string
    
{
        
ob_start(function () {});
        try {
            
$func();
            return 
ob_get_clean();
        } catch (
Throwable $e) {
            
ob_end_clean();
            throw 
$e;
        }
    }


    
/**
     * Returns the last occurred PHP error or an empty string if no error occurred. Unlike error_get_last(),
     * it is nit affected by the PHP directive html_errors and always returns text, not HTML.
     */
    
public static function getLastError(): string
    
{
        
$message error_get_last()['message'] ?? '';
        
$message ini_get('html_errors') ? Html::htmlToText($message) : $message;
        
$message preg_replace('#^w+(.*?): #'''$message);
        return 
$message;
    }


    
/**
     * Converts false to null, does not change other values.
     */
    
public static function falseToNull(mixed $value): mixed
    
{
        return 
$value === false null $value;
    }


    
/**
     * Returns value clamped to the inclusive range of min and max.
     */
    
public static function clamp(int|float $valueint|float $minint|float $max): int|float
    
{
        if (
$min $max) {
            throw new 
NetteInvalidArgumentException("Minimum ($min) is not less than maximum ($max).");
        }

        return 
min(max($value$min), $max);
    }


    
/**
     * Looks for a string from possibilities that is most similar to value, but not the same (for 8-bit encoding).
     * @param  string[]  $possibilities
     */
    
public static function getSuggestion(array $possibilitiesstring $value): ?string
    
{
        
$best null;
        
$min = (strlen($value) / 1) * 10 .1;
        foreach (
array_unique($possibilities) as $item) {
            if (
$item !== $value && ($len levenshtein($item$value101110)) < $min) {
                
$min $len;
                
$best $item;
            }
        }

        return 
$best;
    }


    
/**
     * Compares two values in the same way that PHP does. Recognizes operators: >, >=, <, <=, =, ==, ===, !=, !==, <>
     */
    
public static function compare(mixed $leftstring $operatormixed $right): bool
    
{
        return 
match ($operator) {
            
'>' => $left $right,
            
'>=' => $left >= $right,
            
'<' => $left $right,
            
'<=' => $left <= $right,
            
'=''==' => $left == $right,
            
'===' => $left === $right,
            
'!=''<>' => $left != $right,
            
'!==' => $left !== $right,
            default => throw new 
NetteInvalidArgumentException("Unknown operator '$operator'"),
        };
    }
}
Онлайн: 1
Реклама