Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/View/InvokableComponentVariable.php
Строк: 71
<?php

namespace IlluminateView;

use 
ArrayIterator;
use 
Closure;
use 
IlluminateContractsSupportDeferringDisplayableValue;
use 
IlluminateSupportEnumerable;
use 
IteratorAggregate;
use 
Traversable;

class 
InvokableComponentVariable implements DeferringDisplayableValueIteratorAggregate
{
    
/**
     * The callable instance to resolve the variable value.
     *
     * @var Closure
     */
    
protected $callable;

    
/**
     * Create a new variable instance.
     *
     * @param  Closure  $callable
     * @return void
     */
    
public function __construct(Closure $callable)
    {
        
$this->callable $callable;
    }

    
/**
     * Resolve the displayable value that the class is deferring.
     *
     * @return IlluminateContractsSupportHtmlable|string
     */
    
public function resolveDisplayableValue()
    {
        return 
$this->__invoke();
    }

    
/**
     * Get an iterator instance for the variable.
     *
     * @return ArrayIterator
     */
    
public function getIterator(): Traversable
    
{
        
$result $this->__invoke();

        return new 
ArrayIterator($result instanceof Enumerable $result->all() : $result);
    }

    
/**
     * Dynamically proxy attribute access to the variable.
     *
     * @param  string  $key
     * @return mixed
     */
    
public function __get($key)
    {
        return 
$this->__invoke()->{$key};
    }

    
/**
     * Dynamically proxy method access to the variable.
     *
     * @param  string  $method
     * @param  array  $parameters
     * @return mixed
     */
    
public function __call($method$parameters)
    {
        return 
$this->__invoke()->{$method}(...$parameters);
    }

    
/**
     * Resolve the variable.
     *
     * @return mixed
     */
    
public function __invoke()
    {
        return 
call_user_func($this->callable);
    }

    
/**
     * Resolve the variable as a string.
     *
     * @return mixed
     */
    
public function __toString()
    {
        return (string) 
$this->__invoke();
    }
}
Онлайн: 1
Реклама