Completed
Push — master ( ae5e03...0447ee )
by Jeroen
10:35 queued 04:37
created

Command/GenerateFormPagePartsCommand.php (2 issues)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
namespace Kunstmaan\GeneratorBundle\Command;
4
5
use Kunstmaan\GeneratorBundle\Generator\DefaultPagePartGenerator;
6
use Symfony\Component\Console\Input\InputOption;
7
8
/**
9
 * Generates the default form pageparts
10
 */
11
class GenerateFormPagePartsCommand extends KunstmaanGenerateCommand
12
{
13
    /**
14
     * @var BundleInterface
15
     */
16
    private $bundle;
17
18
    /**
19
     * @var string
20
     */
21
    private $prefix;
22
23
    /**
24
     * @see Command
25
     */
26
    protected function configure()
27
    {
28
        $this->setDescription('Generates default form pageparts')
29
            ->setHelp(
30
                <<<'EOT'
31
The <info>kuma:generate:form-pageparts</info> command generates the default form pageparts and adds the pageparts configuration.
32
33
<info>php bin/console kuma:generate:form-pageparts</info>
34
EOT
35
            )
36
            ->addOption('namespace', '', InputOption::VALUE_OPTIONAL, 'The namespace to generate the default form pageparts in')
37
            ->addOption('prefix', '', InputOption::VALUE_OPTIONAL, 'The prefix to be used in the table name of the generated entity')
38
            ->setName('kuma:generate:form-pageparts');
39
    }
40
41
    /**
42
     * {@inheritdoc}
43
     */
44
    protected function getWelcomeText()
45
    {
46
        return 'Welcome to the Kunstmaan default form pageparts generator';
47
    }
48
49
    /**
50
     * {@inheritdoc}
51
     */
52
    protected function doExecute()
53
    {
54
        $this->assistant->writeSection('Default Form PageParts generation');
55
56
        $pagepartNames = [
57
            'AbstractFormPagePart',
58
            'CheckboxPagePart',
59
            'ChoicePagePart',
60
            'EmailPagePart',
61
            'FileUploadPagePart',
62
            'MultiLineTextPagePart',
63
            'SingleLineTextPagePart',
64
            'SubmitButtonPagePart',
65
        ];
66
67
        foreach ($pagepartNames as $pagepartName) {
68
            $this->createGenerator()->generate($this->bundle, $pagepartName, $this->prefix, [], false);
69
        }
70
71
        $this->assistant->writeSection('PageParts successfully created', 'bg=green;fg=black');
72
        $this->assistant->writeLine(
73
            [
74
                'Make sure you update your database first before you test the pagepart:',
75
                '    Directly update your database:          <comment>bin/console doctrine:schema:update --force</comment>',
76
                '    Create a Doctrine migration and run it: <comment>bin/console doctrine:migrations:diff && bin/console doctrine:migrations:migrate</comment>',
77
            ]
78
        );
79
80
        return 0;
81
    }
82
83
    /**
84
     * {@inheritdoc}
85
     */
86
    protected function doInteract()
87
    {
88
        if (!$this->isBundleAvailable('KunstmaanPagePartBundle')) {
89
            $this->assistant->writeError('KunstmaanPagePartBundle not found', true);
90
        }
91
92
        $this->assistant->writeLine(["This command helps you to generate the form pageparts.\n"]);
93
94
        /**
95
         * Ask for which bundle we need to create the pagepart
96
         */
97
        $bundleNamespace = $this->assistant->getOptionOrDefault('namespace', null);
98
        $this->bundle = $this->askForBundleName('pagepart', $bundleNamespace);
99
100
        /*
101
         * Ask the database table prefix
102
         */
103
        $this->prefix = $this->askForPrefix(null, $this->bundle->getNamespace());
104
    }
105
106
    /**
107
     * Get the generator.
108
     *
109
     * @return DefaultPagePartGenerator
110
     */
111 View Code Duplication
    protected function createGenerator()
112
    {
113
        $filesystem = $this->getContainer()->get('filesystem');
114
        $registry = $this->getContainer()->get('doctrine');
115
116
        return new DefaultPagePartGenerator($filesystem, $registry, '/pagepart', $this->assistant, $this->getContainer());
0 ignored issues
show
$filesystem is of type object|null, but the function expects a object<Symfony\Component\Filesystem\Filesystem>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
$registry is of type object|null, but the function expects a object<Symfony\Bridge\Doctrine\RegistryInterface>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
117
    }
118
}
119