ControllerConsole::create()   B
last analyzed

Complexity

Conditions 9
Paths 11

Size

Total Lines 52
Code Lines 26

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 26
dl 0
loc 52
rs 8.0555
c 0
b 0
f 0
cc 9
nc 11
nop 2

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
/**
3
 * KumbiaPHP web & app Framework
4
 *
5
 * LICENSE
6
 *
7
 * This source file is subject to the new BSD license that is bundled
8
 * with this package in the file LICENSE.
9
 *
10
 * @category   Kumbia
11
 * @package    Console
12
 *
13
 * @copyright  Copyright (c) 2005 - 2023 KumbiaPHP Team (http://www.kumbiaphp.com)
14
 * @license    https://github.com/KumbiaPHP/KumbiaPHP/blob/master/LICENSE   New BSD License
15
 */
16
17
/**
18
 * Consola para manejar controladores
19
 *
20
 * @category   Kumbia
21
 * @package    Console
22
 */
23
class ControllerConsole
24
{
25
26
    /**
27
     * Comando de consola para crear un controlador
28
     *
29
     * @param array $params parametros nombrados de la consola
30
     * @param string $controller controlador
31
     * @throw KumbiaException
32
     */
33
    public function create($params, $controller)
34
    {
35
        // nombre de archivo
36
        $file = APP_PATH . 'controllers';
37
38
        // limpia el path de controller
39
        $clean_path = trim($controller, '/');
40
41
        // obtiene el path
42
        $path = explode('/', $clean_path);
43
44
        // obtiene el nombre de controlador
45
        $controller_name = array_pop($path);
46
47
        // si se agrupa el controlador en un directorio
48
        if (count($path)) {
49
            $dir = implode('/', $path);
50
            $file .= "/$dir";
51
            if (!is_dir($file) && !FileUtil::mkdir($file)) {
52
                throw new KumbiaException("No se ha logrado crear el directorio \"$file\"");
53
            }
54
        }
55
        $file .= "/{$controller_name}_controller.php";
56
57
        // si no existe o se sobreescribe
58
        if (!is_file($file) ||
59
                Console::input("El controlador existe, ¿desea sobrescribirlo? (s/n): ", array('s', 'n')) == 's') {
60
61
            // nombre de clase
62
            $class = Util::camelcase($controller_name);
63
64
            // codigo de controlador
65
            ob_start();
66
            include __DIR__ . '/generators/controller.php';
67
            $code = '<?php' . PHP_EOL . ob_get_clean();
68
69
            // genera el archivo
70
            if (file_put_contents($file, $code)) {
71
                echo "-> Creado controlador $controller_name en: $file" . PHP_EOL;
72
            } else {
73
                throw new KumbiaException("No se ha logrado crear el archivo \"$file\"");
74
            }
75
76
            // directorio para vistas
77
            $views_dir = APP_PATH . "views/$clean_path";
78
79
            //si el directorio no existe
80
            if (!is_dir($views_dir)) {
81
                if (FileUtil::mkdir($views_dir)) {
82
                    echo "-> Creado directorio para vistas: $views_dir" . PHP_EOL;
83
                } else {
84
                    throw new KumbiaException("No se ha logrado crear el directorio \"$views_dir\"");
85
                }
86
            }
87
        }
88
    }
89
90
    /**
91
     * Comando de consola para eliminar un controlador
92
     *
93
     * @param array $params parametros nombrados de la consola
94
     * @param string $controller controlador
95
     * @throw KumbiaException
96
     */
97
    public function delete($params, $controller)
0 ignored issues
show
Unused Code introduced by
The parameter $params is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

97
    public function delete(/** @scrutinizer ignore-unused */ $params, $controller)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
98
    {
99
        // path limpio al controlador
100
        $clean_path = trim($controller, '/');
101
102
        // nombre de archivo
103
        $file = APP_PATH . "controllers/$clean_path";
104
105
        // si es un directorio
106
        if (is_dir($file)) {
107
            $success = FileUtil::rmdir($file);
108
        } else {
109
            // entonces es un archivo
110
            $file = "{$file}_controller.php";
111
            $success = unlink($file);
112
        }
113
114
        // mensaje
115
        if ($success) {
116
            echo "-> Eliminado: $file" . PHP_EOL;
117
        } else {
118
            throw new KumbiaException("No se ha logrado eliminar \"$file\"");
119
        }
120
121
        // directorio para vistas
122
        $views_dir = APP_PATH . "views/$clean_path";
123
124
        // intenta eliminar el directorio de vistas
125
        if (is_dir($views_dir)
126
                && Console::input('¿Desea eliminar el directorio de vistas? (s/n): ', array('s', 'n')) == 's') {
127
128
            if (!FileUtil::rmdir($views_dir)) {
129
                throw new KumbiaException("No se ha logrado eliminar \"$views_dir\"");
130
            }
131
132
            echo "-> Eliminado: $views_dir" . PHP_EOL;
133
        }
134
    }
135
136
}