Skimia\ApiFusion
  • Namespace
  • Class
  • Tree
  • Todo
  • Download

Namespaces

  • PHP
  • Skimia
    • ApiFusion
      • Annotations
        • ApiRouting
          • Annotations
      • Auth
      • Console
        • Commands
      • Domain
        • Contracts
        • Exceptions
        • Traits
        • Users
        • Validation
      • Facade
      • Http
        • Controllers
          • Api
      • Routing

Classes

  • Skimia\ApiFusion\Annotations\ApiRouting\Annotations\ApiEndpoint
  • Skimia\ApiFusion\Annotations\ApiRouting\Annotations\ApiResource
  • Skimia\ApiFusion\Annotations\ApiRouting\ApiRoutingAnnotationsServiceProvider
  • Skimia\ApiFusion\Annotations\ApiRouting\Scanner
  • Skimia\ApiFusion\ApiFusionServiceProvider
  • Skimia\ApiFusion\Auth\Sentinel
  • Skimia\ApiFusion\Auth\User
  • Skimia\ApiFusion\Console\Commands\GenerateDomainApi
  • Skimia\ApiFusion\Domain\ResourceService
  • Skimia\ApiFusion\Domain\ResourceServiceModel
  • Skimia\ApiFusion\Domain\Users\EloquentServiceUserAdapter
  • Skimia\ApiFusion\Domain\Users\SentinelServiceUserAdapter
  • Skimia\ApiFusion\Domain\Validation\Bindings
  • Skimia\ApiFusion\Domain\Validation\Validator
  • Skimia\ApiFusion\Facade\RouteFusion
  • Skimia\ApiFusion\Http\Controllers\Api\ApiController
  • Skimia\ApiFusion\Http\Controllers\Api\ResourceServiceController
  • Skimia\ApiFusion\Http\Controllers\Api\SentinelSessionsController
  • Skimia\ApiFusion\Routing\RouteFusion

Interfaces

  • Skimia\ApiFusion\Domain\Contracts\InputValidatorContract
  • Skimia\ApiFusion\Domain\Contracts\ResourceServiceModelContract
  • Skimia\ApiFusion\Domain\Contracts\ServiceUserContract

Traits

  • Skimia\ApiFusion\Domain\Traits\CheckableTrait

Exceptions

  • Exception
  • Skimia\ApiFusion\Domain\Exceptions\AuthorisationException
  • Skimia\ApiFusion\Domain\Exceptions\DomainException
  • Skimia\ApiFusion\Domain\Exceptions\RequiredInputValidatorException
  • Skimia\ApiFusion\Domain\Exceptions\ValidationException
  1 <?php
  2 /**
  3  * Created by PhpStorm.
  4  * User: kessler
  5  * Date: 18/03/16
  6  * Time: 12:25
  7  */
  8 
  9 namespace Skimia\ApiFusion\Domain\Validation;
 10 
 11 
 12 class Bindings {
 13 
 14     /**
 15      * @var array Validation rules
 16      */
 17     private $rules;
 18 
 19     /**
 20      * @var array Binding delimiters
 21      */
 22     private $delimiters = array('{', '}');
 23 
 24     /**
 25      * Initialize the Bindings class.
 26      *
 27      * @param  array  $inputs
 28      * @param  string  $scope
 29      * @return void
 30      */
 31     public function __construct($args, $rules)
 32     {
 33         $this->rules = $rules;
 34         $bindings = $this->prepare($args);
 35 
 36         if (count($bindings)) {
 37             $this->replace($bindings);
 38         }
 39     }
 40 
 41     /**
 42      * Static factory.
 43      *
 44      * @param  array  $inputs
 45      * @param  string  $scope
 46      * @return void
 47      */
 48     public static function make($args, $rules)
 49     {
 50         return new static($args, $rules);
 51     }
 52 
 53     /**
 54      * Get the rules after bindings have
 55      * been processed.
 56      *
 57      * @return array
 58      */
 59     public function rules()
 60     {
 61         return $this->rules;
 62     }
 63 
 64     /**
 65      * Prepares binding parameters.
 66      *
 67      * @param array $args
 68      * @return void
 69      */
 70     private function prepare($args)
 71     {
 72         $bindings = array();
 73 
 74         // Two parameters (key, value).
 75         if (count($args) == 2) {
 76             $bindings[$args[0]] = $args[1];
 77         }
 78         // Array of parameters.
 79         elseif (is_array($args[0])) {
 80             $bindings = $args[0];
 81         }
 82 
 83         return $bindings;
 84     }
 85 
 86     /**
 87      * Replaces binding occurrences.
 88      *
 89      * @param array $bindings
 90      * @return void
 91      */
 92     private function replace($bindings)
 93     {
 94 
 95         foreach($bindings as $k=>$binding){
 96             if(is_array($binding))
 97                 unset($bindings[$k]);
 98         }
 99 
100         $search = array_keys($bindings);
101         $replace = array_values($bindings);
102 
103         foreach ($search as $key => &$value) {
104             $value = $this->delimiters[0].$value.$this->delimiters[1];
105         }
106 
107         array_walk_recursive($this->rules, function(&$value, $key) use($search, $replace) {
108             $value = str_ireplace($search, $replace, $value);
109         });
110     }
111 
112 }
Skimia\ApiFusion API documentation generated by ApiGen