Вход Регистрация
Файл: gapps/vendor/laravelcollective/html/src/Eloquent/FormAccessible.php
Строк: 62
<?php

namespace CollectiveHtmlEloquent;

use 
ReflectionClass;
use 
ReflectionMethod;
use 
IlluminateSupportStr;

trait 
FormAccessible
{

    
/**
     * A cached ReflectionClass instance for $this
     *
     * @var ReflectionClass
     */
    
protected $reflection;

    
/**
     * @param string $key
     *
     * @return mixed
     */
    
public function getFormValue($key)
    {
        
$value $this->getAttributeFromArray($key);

        
// If the attribute is listed as a date, we will convert it to a DateTime
        // instance on retrieval, which makes it quite convenient to work with
        // date fields without having to create a mutator for each property.
        
if (in_array($key$this->getDates())) {
            if (! 
is_null($value)) {
                
$value $this->asDateTime($value);
            }
        }

        
// If the attribute has a get mutator, we will call that then return what
        // it returns as the value, which is useful for transforming values on
        // retrieval from the model to a form that is more useful for usage.
        
if ($this->hasFormMutator($key)) {
            return 
$this->mutateFormAttribute($key$value);
        }

        
// No form mutator, let the model resolve this
        
return data_get($this$key);
    }

    
/**
     * @param $key
     *
     * @return bool
     */
    
protected function hasFormMutator($key)
    {
        
$methods $this->getReflection()->getMethods(ReflectionMethod::IS_PUBLIC);

        
$mutator collect($methods)
          ->
first(function ($indexReflectionMethod $method) use ($key) {
              return 
$method->getName() == 'form' Str::studly($key) . 'Attribute';
          });

        return (bool) 
$mutator;
    }

    
/**
     * @param $key
     * @param $value
     *
     * @return mixed
     */
    
private function mutateFormAttribute($key$value)
    {
        return 
$this->{'form' Str::studly($key) . 'Attribute'}($value);
    }

    
/**
     * Get a ReflectionClass Instance
     * @return ReflectionClass
     */
    
protected function getReflection()
    {
        if (! 
$this->reflection) {
            
$this->reflection = new ReflectionClass($this);
        }

        return 
$this->reflection;
    }
}
Онлайн: 1
Реклама