Blame view

vendor/fzaninotto/faker/src/Faker/Documentor.php 2.32 KB
ad2e91f7   Mihail   move multyparser ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  <?php
  
  namespace Faker;
  
  class Documentor
  {
      protected $generator;
  
      public function __construct(Generator $generator)
      {
          $this->generator = $generator;
      }
  
      public function getFormatters()
      {
          $formatters = array();
          $providers = array_reverse($this->generator->getProviders());
          $providers[]= new \Faker\Provider\Base($this->generator);
          foreach ($providers as $provider) {
              $providerClass = get_class($provider);
              $formatters[$providerClass] = array();
              $refl = new \ReflectionObject($provider);
              foreach ($refl->getMethods(\ReflectionMethod::IS_PUBLIC) as $reflmethod) {
                  if ($reflmethod->getDeclaringClass()->getName() == 'Faker\Provider\Base' && $providerClass != 'Faker\Provider\Base') {
                      continue;
                  }
                  $methodName = $reflmethod->name;
                  if ($reflmethod->isConstructor()) {
                      continue;
                  }
                  $parameters = array();
                  foreach ($reflmethod->getParameters() as $reflparameter) {
                      $parameter = '$'. $reflparameter->getName();
                      if ($reflparameter->isDefaultValueAvailable()) {
                          $parameter .= ' = ' . var_export($reflparameter->getDefaultValue(), true);
                      }
                      $parameters []= $parameter;
                  }
                  $parameters = $parameters ? '('. join(', ', $parameters) . ')' : '';
                  try {
                      $example = $this->generator->format($methodName);
                  } catch (\InvalidArgumentException $e) {
                      $example = '';
                  }
                  if (is_array($example)) {
                      $example = "array('". join("', '", $example) . "')";
                  } elseif ($example instanceof \DateTime) {
                      $example = "DateTime('" . $example->format('Y-m-d H:i:s') . "')";
                  } elseif ($example instanceof Generator || $example instanceof UniqueGenerator) { // modifier
                      $example = '';
                  } else {
                      $example = var_export($example, true);
                  }
                  $formatters[$providerClass][$methodName . $parameters] = $example;
              }
          }
  
          return $formatters;
      }
  }