Int2stringCharacters   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 68
Duplicated Lines 100 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
dl 68
loc 68
ccs 0
cts 18
cp 0
rs 10
c 0
b 0
f 0
wmc 5
lcom 1
cbo 1

3 Methods

Rating   Name   Duplication   Size   Complexity  
A handle() 14 14 2
A generateRandomCharacters() 4 4 1
A setCharactersInEnvironmentFile() 14 14 2

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
3
namespace App\Support\Console\Commands;
4
5
use Illuminate\Console\Command;
6
7 View Code Duplication
class Int2stringCharacters extends Command
8
{
9
    /**
10
     * The name and signature of the console command.
11
     *
12
     * @var string
13
     */
14
    protected $signature = 'int2string:characters
15
        {--show : Display the characters instead of modifying the config file}
16
        {--c|characters=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ : Generate with custom characters}';
17
18
    /**
19
     * The console command description.
20
     *
21
     * @var string
22
     */
23
    protected $description = 'Set characters for Helper::int2string.';
24
25
    /**
26
     * Execute the console command.
27
     *
28
     * @return mixed
29
     */
30
    public function handle()
31
    {
32
        $characters = $this->generateRandomCharacters($this->option('characters'));
33
34
        if ($this->option('show')) {
35
            return $this->comment($characters);
36
        }
37
38
        $this->setCharactersInEnvironmentFile($characters);
39
40
        $this->laravel['config']['support.int2string'] = $characters;
41
42
        $this->info("Characters [$characters] set successfully.");
43
    }
44
45
    /**
46
     * Generate random characters.
47
     *
48
     * @return string
49
     */
50
    protected function generateRandomCharacters($characters)
51
    {
52
        return str_shuffle(count_chars($characters, 3));
53
    }
54
55
    /**
56
     * Set the characters in the environment file.
57
     *
58
     * @param  string  $characters
59
     */
60
    protected function setCharactersInEnvironmentFile($characters)
61
    {
62
        $content = file_get_contents($this->laravel->environmentFilePath());
63
64
        $text = 'INT2STRING_CHARACTERS='.$characters;
65
66
        $content = preg_replace('#INT2STRING_CHARACTERS=.*#', $text, $content, -1, $replaceCount);
67
68
        if (0 === $replaceCount) {
69
            $content .= $text.PHP_EOL;
70
        }
71
72
        file_put_contents($this->laravel->environmentFilePath(), $content);
73
    }
74
}
75