EntityClassWriter::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 2
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php declare(strict_types=1);
2
3
namespace Janisbiz\LightOrm\Dms\MySQL\Generator\Writer;
4
5
use Janisbiz\LightOrm\Generator\Dms\DmsDatabaseInterface;
6
use Janisbiz\LightOrm\Generator\Dms\DmsTableInterface;
7
use Janisbiz\LightOrm\Generator\Writer\AbstractWriter;
8
use Janisbiz\LightOrm\Generator\Writer\WriterConfigInterface;
9
10
class EntityClassWriter extends AbstractWriter
11
{
12
    /**
13
     * @var BaseEntityClassWriter
14
     */
15
    protected $baseEntityClassWriter;
16
17
    /**
18
     * @param WriterConfigInterface $writerConfig
19
     * @param BaseEntityClassWriter $baseEntityClassWriter
20
     */
21
    public function __construct(WriterConfigInterface $writerConfig, BaseEntityClassWriter $baseEntityClassWriter)
22
    {
23
        $this->writerConfig = $writerConfig;
24
        $this->baseEntityClassWriter = $baseEntityClassWriter;
25
    }
26
27
    /**
28
     * @param DmsDatabaseInterface $dmsDatabase
29
     * @param DmsTableInterface $dmsTable
30
     * @param array $existingFiles
31
     *
32
     * @return EntityClassWriter
33
     */
34
    public function write(
35
        DmsDatabaseInterface $dmsDatabase,
36
        DmsTableInterface $dmsTable,
37
        array &$existingFiles
38
    ) {
39
        $fileName = $this->generateFileName($dmsDatabase, $dmsTable);
40
41
        return $this
42
            ->writeFile($fileName, $this->generateFileContents($dmsDatabase, $dmsTable), true)
43
            ->removeFileFromExistingFiles($fileName, $existingFiles)
44
        ;
45
    }
46
47
    /**
48
     * @return WriterConfigInterface
49
     */
50
    protected function getWriterConfig(): WriterConfigInterface
51
    {
52
        return $this->writerConfig;
53
    }
54
55
    /**
56
     * @param DmsDatabaseInterface $dmsDatabase
57
     * @param DmsTableInterface $dmsTable
58
     *
59
     * @return string
60
     */
61
    protected function generateFileContents(DmsDatabaseInterface $dmsDatabase, DmsTableInterface $dmsTable): string
62
    {
63
        return /** @lang PHP */<<<PHP
64
<?php declare(strict_types=1);
65
66
namespace {$this->generateNamespace($dmsDatabase)};
67
68
use {$this->baseEntityClassWriter->generateFQDN($dmsDatabase, $dmsTable)};
69
70
class {$this->generateClassName($dmsTable)} extends {$this->baseEntityClassWriter->generateClassName($dmsTable)}
71
{
72
}
73
74
PHP;
75
    }
76
}
77