Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

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