コード例 #1
0
 /**
  * Run a value through the filters OR format attribute associated with the
  * parameter.
  *
  * @param mixed $value Value to filter
  *
  * @return mixed Returns the filtered value
  * @throws \RuntimeException when trying to format when no service
  *     description is available.
  */
 public function filter($value)
 {
     // Formats are applied exclusively and supersed filters
     if ($this->format) {
         if (!$this->serviceDescription) {
             throw new \RuntimeException('No service description was set so ' . 'the value cannot be formatted.');
         }
         return $this->serviceDescription->format($this->format, $value);
     }
     // Convert Boolean values
     if ($this->type == 'boolean' && !is_bool($value)) {
         $value = filter_var($value, FILTER_VALIDATE_BOOLEAN);
     }
     // Apply filters to the value
     if ($this->filters) {
         foreach ($this->filters as $filter) {
             if (is_array($filter)) {
                 // Convert complex filters that hold value place holders
                 foreach ($filter['args'] as &$data) {
                     if ($data == '@value') {
                         $data = $value;
                     } elseif ($data == '@api') {
                         $data = $this;
                     }
                 }
                 $value = call_user_func_array($filter['method'], $filter['args']);
             } else {
                 $value = call_user_func($filter, $value);
             }
         }
     }
     return $value;
 }
コード例 #2
0
 public function testCanUseCustomFormatter()
 {
     $formatter = $this->getMockBuilder('GuzzleHttp\\Common\\Guzzle\\SchemaFormatter')->setMethods(['format'])->getMock();
     $formatter->expects($this->once())->method('format');
     $s = new Description([], ['formatter' => $formatter]);
     $s->format('time', 'now');
 }