kint-php /
kint
This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
| 1 | <?php |
||
| 2 | |||
| 3 | class Kint |
||
|
0 ignored issues
–
show
The property $enabled_mode is not named in camelCase.
This check marks property names that have not been written in camelCase. In camelCase names are written without any punctuation, the start of each new word being marked
by a capital letter. Thus the name database connection string becomes Loading history...
The property $mode_default is not named in camelCase.
This check marks property names that have not been written in camelCase. In camelCase names are written without any punctuation, the start of each new word being marked
by a capital letter. Thus the name database connection string becomes Loading history...
The property $mode_default_cli is not named in camelCase.
This check marks property names that have not been written in camelCase. In camelCase names are written without any punctuation, the start of each new word being marked
by a capital letter. Thus the name database connection string becomes Loading history...
The property $file_link_format is not named in camelCase.
This check marks property names that have not been written in camelCase. In camelCase names are written without any punctuation, the start of each new word being marked
by a capital letter. Thus the name database connection string becomes Loading history...
The property $display_called_from is not named in camelCase.
This check marks property names that have not been written in camelCase. In camelCase names are written without any punctuation, the start of each new word being marked
by a capital letter. Thus the name database connection string becomes Loading history...
The property $app_root_dirs is not named in camelCase.
This check marks property names that have not been written in camelCase. In camelCase names are written without any punctuation, the start of each new word being marked
by a capital letter. Thus the name database connection string becomes Loading history...
The property $max_depth is not named in camelCase.
This check marks property names that have not been written in camelCase. In camelCase names are written without any punctuation, the start of each new word being marked
by a capital letter. Thus the name database connection string becomes Loading history...
The property $cli_detection is not named in camelCase.
This check marks property names that have not been written in camelCase. In camelCase names are written without any punctuation, the start of each new word being marked
by a capital letter. Thus the name database connection string becomes Loading history...
The property $plugin_pool is not named in camelCase.
This check marks property names that have not been written in camelCase. In camelCase names are written without any punctuation, the start of each new word being marked
by a capital letter. Thus the name database connection string becomes Loading history...
The property $dump_array is not named in camelCase.
This check marks property names that have not been written in camelCase. In camelCase names are written without any punctuation, the start of each new word being marked
by a capital letter. Thus the name database connection string becomes Loading history...
|
|||
| 4 | { |
||
| 5 | /** |
||
| 6 | * @var mixed Kint mode |
||
| 7 | * |
||
| 8 | * false: Disabled |
||
| 9 | * true: Enabled, default mode selection |
||
| 10 | * string: Manual mode selection |
||
| 11 | */ |
||
| 12 | public static $enabled_mode = true; |
||
|
0 ignored issues
–
show
$enabled_mode does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 13 | |||
| 14 | /** |
||
| 15 | * Default mode. |
||
| 16 | * |
||
| 17 | * @var string |
||
| 18 | */ |
||
| 19 | public static $mode_default = self::MODE_RICH; |
||
|
0 ignored issues
–
show
$mode_default does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 20 | |||
| 21 | /** |
||
| 22 | * Default mode in CLI with cli_detection on. |
||
| 23 | * |
||
| 24 | * @var string |
||
| 25 | */ |
||
| 26 | public static $mode_default_cli = self::MODE_CLI; |
||
|
0 ignored issues
–
show
$mode_default_cli does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 27 | |||
| 28 | /** |
||
| 29 | * @var bool Return output instead of echoing |
||
| 30 | */ |
||
| 31 | public static $return; |
||
| 32 | |||
| 33 | /** |
||
| 34 | * @var string format of the link to the source file in trace entries. |
||
| 35 | * |
||
| 36 | * Use %f for file path, %l for line number. |
||
| 37 | * |
||
| 38 | * [!] EXAMPLE (works with for phpStorm and RemoteCall Plugin): |
||
| 39 | * |
||
| 40 | * Kint::$file_link_format = 'http://localhost:8091/?message=%f:%l'; |
||
| 41 | */ |
||
| 42 | public static $file_link_format = ''; |
||
|
0 ignored issues
–
show
$file_link_format does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 43 | |||
| 44 | /** |
||
| 45 | * @var bool whether to display where kint was called from |
||
| 46 | */ |
||
| 47 | public static $display_called_from = true; |
||
|
0 ignored issues
–
show
$display_called_from does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 48 | |||
| 49 | /** |
||
| 50 | * @var array base directories of your application that will be displayed instead of the full path. |
||
| 51 | * |
||
| 52 | * Keys are paths, values are replacement strings |
||
| 53 | * |
||
| 54 | * [!] EXAMPLE (for Kohana framework): |
||
| 55 | * |
||
| 56 | * Kint::$app_root_dirs = array( |
||
| 57 | * APPPATH => 'APPPATH', |
||
| 58 | * SYSPATH => 'SYSPATH', |
||
| 59 | * MODPATH => 'MODPATH', |
||
| 60 | * DOCROOT => 'DOCROOT', |
||
| 61 | * ); |
||
| 62 | * |
||
| 63 | * [!] EXAMPLE #2 (for a semi-universal approach) |
||
| 64 | * |
||
| 65 | * Kint::$app_root_dirs = array( |
||
| 66 | * realpath( __DIR__ . '/../../..' ) => 'ROOT', // go up as many levels as needed |
||
| 67 | * ); |
||
| 68 | */ |
||
| 69 | public static $app_root_dirs = array(); |
||
|
0 ignored issues
–
show
$app_root_dirs does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 70 | |||
| 71 | /** |
||
| 72 | * @var int max array/object levels to go deep, if zero no limits are applied |
||
| 73 | */ |
||
| 74 | public static $max_depth = 6; |
||
|
0 ignored issues
–
show
$max_depth does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 75 | |||
| 76 | /** |
||
| 77 | * @var bool expand all trees by default for rich view |
||
| 78 | */ |
||
| 79 | public static $expanded = false; |
||
| 80 | |||
| 81 | /** |
||
| 82 | * @var bool enable detection when Kint is command line. |
||
| 83 | * |
||
| 84 | * Formats output with whitespace only; does not HTML-escape it |
||
| 85 | */ |
||
| 86 | public static $cli_detection = true; |
||
|
0 ignored issues
–
show
$cli_detection does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 87 | |||
| 88 | /** |
||
| 89 | * @var array Kint aliases. Add debug functions in Kint wrappers here to fix modifiers and backtraces |
||
| 90 | */ |
||
| 91 | public static $aliases = array( |
||
| 92 | array('Kint', 'dump'), |
||
| 93 | array('Kint', 'trace'), |
||
| 94 | array('Kint', 'dumpArray'), |
||
| 95 | ); |
||
| 96 | |||
| 97 | /** |
||
| 98 | * @var array Kint_Renderer descendants. Add to array to extend. |
||
| 99 | */ |
||
| 100 | public static $renderers = array( |
||
| 101 | self::MODE_RICH => 'Kint_Renderer_Rich', |
||
| 102 | self::MODE_PLAIN => 'Kint_Renderer_Plain', |
||
| 103 | self::MODE_TEXT => 'Kint_Renderer_Text', |
||
| 104 | self::MODE_CLI => 'Kint_Renderer_Cli', |
||
| 105 | ); |
||
| 106 | |||
| 107 | const MODE_RICH = 'r'; |
||
| 108 | const MODE_TEXT = 't'; |
||
| 109 | const MODE_CLI = 'c'; |
||
| 110 | const MODE_PLAIN = 'p'; |
||
| 111 | |||
| 112 | public static $plugins = array( |
||
| 113 | 'Kint_Parser_Base64', |
||
| 114 | 'Kint_Parser_Blacklist', |
||
| 115 | 'Kint_Parser_ClassMethods', |
||
| 116 | 'Kint_Parser_ClassStatics', |
||
| 117 | 'Kint_Parser_Closure', |
||
| 118 | 'Kint_Parser_Color', |
||
| 119 | 'Kint_Parser_DateTime', |
||
| 120 | 'Kint_Parser_FsPath', |
||
| 121 | 'Kint_Parser_Iterator', |
||
| 122 | 'Kint_Parser_Json', |
||
| 123 | 'Kint_Parser_Microtime', |
||
| 124 | 'Kint_Parser_SimpleXMLElement', |
||
| 125 | 'Kint_Parser_SplFileInfo', |
||
| 126 | 'Kint_Parser_SplObjectStorage', |
||
| 127 | 'Kint_Parser_Stream', |
||
| 128 | 'Kint_Parser_Table', |
||
| 129 | 'Kint_Parser_Throwable', |
||
| 130 | 'Kint_Parser_Timestamp', |
||
| 131 | 'Kint_Parser_ToString', |
||
| 132 | 'Kint_Parser_Trace', |
||
| 133 | 'Kint_Parser_Xml', |
||
| 134 | ); |
||
| 135 | |||
| 136 | private static $plugin_pool = array(); |
||
|
0 ignored issues
–
show
$plugin_pool does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 137 | private static $dump_array = false; |
||
|
0 ignored issues
–
show
$dump_array does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 138 | private static $names = array(); |
||
| 139 | |||
| 140 | /** |
||
| 141 | * Stashes or sets all settings at once. |
||
| 142 | * |
||
| 143 | * @param array|null $settings Array of all settings to be set or null to set none |
||
| 144 | * |
||
| 145 | * @return array Current settings |
||
| 146 | */ |
||
| 147 | public static function settings(array $settings = null) |
||
| 148 | { |
||
| 149 | static $keys = array( |
||
| 150 | 'aliases', |
||
| 151 | 'app_root_dirs', |
||
| 152 | 'cli_detection', |
||
| 153 | 'display_called_from', |
||
| 154 | 'enabled_mode', |
||
| 155 | 'expanded', |
||
| 156 | 'file_link_format', |
||
| 157 | 'max_depth', |
||
| 158 | 'mode_default', |
||
| 159 | 'mode_default_cli', |
||
| 160 | 'renderers', |
||
| 161 | 'return', |
||
| 162 | 'plugins', |
||
| 163 | ); |
||
| 164 | |||
| 165 | $out = array(); |
||
| 166 | |||
| 167 | foreach ($keys as $key) { |
||
| 168 | $out[$key] = self::$$key; |
||
| 169 | } |
||
| 170 | |||
| 171 | if ($settings !== null) { |
||
| 172 | $in = array_intersect_key($settings, $out); |
||
|
0 ignored issues
–
show
|
|||
| 173 | foreach ($in as $key => $val) { |
||
| 174 | self::$$key = $val; |
||
| 175 | } |
||
| 176 | } |
||
| 177 | |||
| 178 | return $out; |
||
| 179 | } |
||
| 180 | |||
| 181 | /** |
||
| 182 | * Prints a debug backtrace, same as Kint::dump(1). |
||
| 183 | * |
||
| 184 | * @param array $trace [OPTIONAL] you can pass your own trace, otherwise, `debug_backtrace` will be called |
||
|
0 ignored issues
–
show
Should the type for parameter
$trace not be array|null? Also, consider making the array more specific, something like array<String>, or String[].
This check looks for It makes a suggestion as to what type it considers more descriptive. In addition it
looks for parameters that have the generic type Most often this is a case of a parameter that can be null in addition to its declared types. Loading history...
|
|||
| 185 | * |
||
| 186 | * @return mixed |
||
|
0 ignored issues
–
show
|
|||
| 187 | */ |
||
| 188 | public static function trace($trace = null) |
||
| 189 | { |
||
| 190 | if ($trace === null) { |
||
| 191 | if (KINT_PHP525) { |
||
| 192 | $trace = debug_backtrace(true); |
||
|
0 ignored issues
–
show
|
|||
| 193 | } else { |
||
| 194 | $trace = debug_backtrace(); |
||
|
0 ignored issues
–
show
|
|||
| 195 | } |
||
| 196 | } else { |
||
| 197 | return self::dump($trace); |
||
| 198 | } |
||
| 199 | |||
| 200 | Kint_Parser_Trace::normalizeAliases(self::$aliases); |
||
| 201 | |||
| 202 | $trimmed_trace = array(); |
||
|
0 ignored issues
–
show
$trimmed_trace does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 203 | |||
| 204 | foreach ($trace as $frame) { |
||
| 205 | if (Kint_Parser_Trace::frameIsListed($frame, self::$aliases)) { |
||
| 206 | $trimmed_trace = array(); |
||
|
0 ignored issues
–
show
$trimmed_trace does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 207 | } |
||
| 208 | |||
| 209 | $trimmed_trace[] = $frame; |
||
|
0 ignored issues
–
show
$trimmed_trace does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 210 | } |
||
| 211 | |||
| 212 | return self::dumpArray( |
||
| 213 | array($trimmed_trace), |
||
|
0 ignored issues
–
show
$trimmed_trace does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 214 | array(Kint_Object::blank('Kint::trace()', 'debug_backtrace()')) |
||
| 215 | ); |
||
| 216 | } |
||
| 217 | |||
| 218 | /** |
||
| 219 | * Dumps an array as separate values, and uses $names to seed the parser. |
||
| 220 | * |
||
| 221 | * @param array $data Data to be dumped |
||
| 222 | * @param array[Kint_Object]|null $names Array of Kint_Object to seed the parser with |
||
| 223 | */ |
||
| 224 | public static function dumpArray(array $data, array $names = null) |
||
| 225 | { |
||
| 226 | self::$names = $names; |
||
| 227 | self::$dump_array = true; |
||
| 228 | |||
| 229 | $out = self::dump($data); |
||
| 230 | |||
| 231 | self::$names = null; |
||
| 232 | self::$dump_array = false; |
||
| 233 | |||
| 234 | return $out; |
||
| 235 | } |
||
| 236 | |||
| 237 | /** |
||
| 238 | * Dump information about variables, accepts any number of parameters, supports modifiers:. |
||
| 239 | * |
||
| 240 | * clean up any output before kint and place the dump at the top of page: |
||
| 241 | * - Kint::dump() |
||
| 242 | * ***** |
||
| 243 | * expand all nodes on display: |
||
| 244 | * ! Kint::dump() |
||
| 245 | * ***** |
||
| 246 | * dump variables disregarding their depth: |
||
| 247 | * + Kint::dump() |
||
| 248 | * ***** |
||
| 249 | * return output instead of displaying it: |
||
| 250 | * |
||
| 251 | * @ Kint::dump() |
||
| 252 | * ***** |
||
| 253 | * force output as plain text |
||
| 254 | * ~ Kint::dump() |
||
| 255 | * |
||
| 256 | * Modifiers are supported by all dump wrapper functions, including Kint::trace(). Space is optional. |
||
| 257 | * |
||
| 258 | * @param mixed $data |
||
| 259 | * |
||
| 260 | * @return int|string |
||
| 261 | */ |
||
| 262 | public static function dump($data = null) |
||
| 263 | { |
||
| 264 | if (!self::$enabled_mode) { |
||
| 265 | return 0; |
||
| 266 | } |
||
| 267 | |||
| 268 | $stash = self::settings(); |
||
| 269 | $num_args = func_num_args(); |
||
|
0 ignored issues
–
show
$num_args does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 270 | |||
| 271 | list($params, $modifiers, $callee, $caller, $minitrace) = self::getCalleeInfo( |
||
| 272 | defined('DEBUG_BACKTRACE_IGNORE_ARGS') |
||
| 273 | ? debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS) |
||
| 274 | : debug_backtrace(), |
||
| 275 | $num_args |
||
|
0 ignored issues
–
show
$num_args does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 276 | ); |
||
| 277 | |||
| 278 | // set mode for current run |
||
| 279 | View Code Duplication | if (self::$enabled_mode === true) { |
|
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. Loading history...
|
|||
| 280 | self::$enabled_mode = self::$mode_default; |
||
| 281 | if (PHP_SAPI === 'cli' && self::$cli_detection === true) { |
||
| 282 | self::$enabled_mode = self::$mode_default_cli; |
||
| 283 | } |
||
| 284 | } |
||
| 285 | |||
| 286 | if (in_array('~', $modifiers)) { |
||
| 287 | self::$enabled_mode = self::MODE_TEXT; |
||
| 288 | } |
||
| 289 | |||
| 290 | if (!array_key_exists(self::$enabled_mode, self::$renderers)) { |
||
| 291 | $renderer = self::$renderers[self::MODE_PLAIN]; |
||
| 292 | } else { |
||
| 293 | $renderer = self::$renderers[self::$enabled_mode]; |
||
| 294 | } |
||
| 295 | |||
| 296 | // process modifiers: @, +, ! and - |
||
| 297 | if (in_array('-', $modifiers)) { |
||
| 298 | while (ob_get_level()) { |
||
| 299 | ob_end_clean(); |
||
| 300 | } |
||
| 301 | } |
||
| 302 | if (in_array('!', $modifiers)) { |
||
| 303 | self::$expanded = true; |
||
| 304 | } |
||
| 305 | if (in_array('+', $modifiers)) { |
||
| 306 | self::$max_depth = false; |
||
| 307 | } |
||
| 308 | if (in_array('@', $modifiers)) { |
||
| 309 | self::$return = true; |
||
| 310 | } |
||
| 311 | |||
| 312 | $renderer = new $renderer(array( |
||
| 313 | 'num_args' => $num_args, |
||
|
0 ignored issues
–
show
$num_args does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 314 | 'params' => $params, |
||
| 315 | 'modifiers' => $modifiers, |
||
| 316 | 'callee' => $callee, |
||
| 317 | 'caller' => $caller, |
||
| 318 | 'minitrace' => $minitrace, |
||
| 319 | 'settings' => self::settings(), |
||
| 320 | 'stash' => $stash, |
||
| 321 | )); |
||
| 322 | |||
| 323 | $plugins = array(); |
||
| 324 | |||
| 325 | foreach (self::$plugins as $plugin) { |
||
| 326 | if ($plugin instanceof Kint_Parser_Plugin) { |
||
| 327 | $plugins[] = $plugin; |
||
| 328 | } elseif (is_string($plugin) && is_subclass_of($plugin, 'Kint_Parser_Plugin')) { |
||
| 329 | if (!isset(self::$plugin_pool[$plugin])) { |
||
| 330 | $p = new $plugin(); |
||
| 331 | self::$plugin_pool[$plugin] = $p; |
||
| 332 | } |
||
| 333 | $plugins[] = self::$plugin_pool[$plugin]; |
||
| 334 | } |
||
| 335 | } |
||
| 336 | |||
| 337 | $plugins = $renderer->parserPlugins($plugins); |
||
| 338 | |||
| 339 | $output = $renderer->preRender(); |
||
| 340 | |||
| 341 | $parser = new Kint_Parser(self::$max_depth, empty($caller['class']) ? null : $caller['class']); |
||
| 342 | |||
| 343 | foreach ($plugins as $plugin) { |
||
| 344 | $parser->addPlugin($plugin); |
||
| 345 | } |
||
| 346 | |||
| 347 | // Kint::dump(1) shorthand |
||
| 348 | if (!self::$dump_array && (!isset($params[0]['name']) || $params[0]['name'] == '1') && $num_args === 1 && $data === 1) { |
||
|
0 ignored issues
–
show
$num_args does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 349 | if (KINT_PHP525) { |
||
| 350 | $data = debug_backtrace(true); |
||
|
0 ignored issues
–
show
|
|||
| 351 | } else { |
||
| 352 | $data = debug_backtrace(); |
||
|
0 ignored issues
–
show
|
|||
| 353 | } |
||
| 354 | |||
| 355 | $trace = array(); |
||
| 356 | |||
| 357 | // No need to normalize as we've already called it through getCalleeInfo at this point |
||
| 358 | View Code Duplication | foreach ($data as $index => $frame) { |
|
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. Loading history...
|
|||
| 359 | if (Kint_Parser_Trace::frameIsListed($frame, self::$aliases)) { |
||
| 360 | $trace = array(); |
||
| 361 | } |
||
| 362 | |||
| 363 | $trace[] = $frame; |
||
| 364 | } |
||
| 365 | |||
| 366 | $lastframe = reset($trace); |
||
| 367 | $tracename = $lastframe['function'].'(1)'; |
||
| 368 | if (isset($lastframe['class'], $lastframe['type'])) { |
||
| 369 | $tracename = $lastframe['class'].$lastframe['type'].$tracename; |
||
| 370 | } |
||
| 371 | $tracebase = Kint_Object::blank($tracename, 'debug_backtrace()'); |
||
| 372 | |||
| 373 | if (empty($trace)) { |
||
| 374 | $output .= $renderer->render($tracebase->transplant(new Kint_Object_Trace())); |
||
| 375 | } else { |
||
| 376 | $output .= $renderer->render($parser->parse($trace, $tracebase)); |
||
| 377 | } |
||
| 378 | } else { |
||
| 379 | $data = func_get_args(); |
||
|
0 ignored issues
–
show
|
|||
| 380 | if ($data === array()) { |
||
| 381 | $output .= $renderer->render(new Kint_Object_Nothing()); |
||
| 382 | } |
||
| 383 | |||
| 384 | if (self::$dump_array) { |
||
| 385 | $data = $data[0]; |
||
|
0 ignored issues
–
show
|
|||
| 386 | } |
||
| 387 | |||
| 388 | static $blacklist = array('null', 'true', 'false', 'array(...)', 'array()', '"..."', 'b"..."', '[...]', '[]', '(...)', '()'); |
||
| 389 | |||
| 390 | foreach ($data as $i => $argument) { |
||
| 391 | if (isset(self::$names[$i])) { |
||
| 392 | $output .= $renderer->render( |
||
| 393 | $parser->parse($argument, self::$names[$i]) |
||
| 394 | ); |
||
| 395 | continue; |
||
| 396 | } |
||
| 397 | |||
| 398 | if (!isset($params[$i]['name']) || is_numeric($params[$i]['name']) || in_array(str_replace("'", '"', strtolower($params[$i]['name'])), $blacklist, true)) { |
||
| 399 | $name = null; |
||
| 400 | } else { |
||
| 401 | $name = $params[$i]['name']; |
||
| 402 | } |
||
| 403 | |||
| 404 | if (isset($params[$i]['path'])) { |
||
| 405 | $access_path = $params[$i]['path']; |
||
|
0 ignored issues
–
show
$access_path does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 406 | |||
| 407 | if (!empty($params[$i]['expression'])) { |
||
| 408 | $access_path = '('.$access_path.')'; |
||
|
0 ignored issues
–
show
$access_path does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 409 | } |
||
| 410 | } else { |
||
| 411 | $access_path = '$'.$i; |
||
|
0 ignored issues
–
show
$access_path does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 412 | } |
||
| 413 | |||
| 414 | $output .= $renderer->render( |
||
| 415 | $parser->parse($argument, Kint_Object::blank($name, $access_path)) |
||
|
0 ignored issues
–
show
$access_path does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 416 | ); |
||
| 417 | } |
||
| 418 | } |
||
| 419 | |||
| 420 | $output .= $renderer->postRender(); |
||
| 421 | |||
| 422 | if (self::$return) { |
||
| 423 | self::settings($stash); |
||
| 424 | |||
| 425 | return $output; |
||
| 426 | } |
||
| 427 | |||
| 428 | self::settings($stash); |
||
| 429 | echo $output; |
||
| 430 | |||
| 431 | return 0; |
||
| 432 | } |
||
| 433 | |||
| 434 | /** |
||
| 435 | * generic path display callback, can be configured in app_root_dirs; purpose is |
||
| 436 | * to show relevant path info and hide as much of the path as possible. |
||
| 437 | * |
||
| 438 | * @param string $file |
||
| 439 | * |
||
| 440 | * @return string |
||
| 441 | */ |
||
| 442 | public static function shortenPath($file) |
||
| 443 | { |
||
| 444 | $file = array_values(array_filter(explode('/', str_replace('\\', '/', $file)), 'strlen')); |
||
|
0 ignored issues
–
show
|
|||
| 445 | |||
| 446 | $longest_match = 0; |
||
|
0 ignored issues
–
show
$longest_match does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 447 | $match = '/'; |
||
| 448 | |||
| 449 | foreach (self::$app_root_dirs as $path => $alias) { |
||
| 450 | if (empty($path)) { |
||
| 451 | continue; |
||
| 452 | } |
||
| 453 | |||
| 454 | $path = array_values(array_filter(explode('/', str_replace('\\', '/', $path)), 'strlen')); |
||
| 455 | |||
| 456 | if (array_slice($file, 0, count($path)) === $path && count($path) > $longest_match) { |
||
|
0 ignored issues
–
show
$longest_match does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 457 | $longest_match = count($path); |
||
|
0 ignored issues
–
show
$longest_match does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 458 | $match = $alias; |
||
| 459 | } |
||
| 460 | } |
||
| 461 | |||
| 462 | if ($longest_match) { |
||
|
0 ignored issues
–
show
$longest_match does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 463 | $file = array_merge(array($match), array_slice($file, $longest_match)); |
||
|
0 ignored issues
–
show
$longest_match does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 464 | |||
| 465 | return implode('/', $file); |
||
| 466 | } else { |
||
| 467 | // fallback to find common path with Kint dir |
||
| 468 | $kint = array_values(array_filter(explode('/', str_replace('\\', '/', KINT_DIR)), 'strlen')); |
||
| 469 | |||
| 470 | foreach ($file as $i => $part) { |
||
| 471 | if (!isset($kint[$i]) || $kint[$i] !== $part) { |
||
| 472 | return ($i ? '.../' : '/').implode('/', array_slice($file, $i)); |
||
| 473 | } |
||
| 474 | } |
||
| 475 | |||
| 476 | return '/'.implode('/', $file); |
||
| 477 | } |
||
| 478 | } |
||
| 479 | |||
| 480 | public static function getIdeLink($file, $line) |
||
| 481 | { |
||
| 482 | return str_replace(array('%f', '%l'), array($file, $line), self::$file_link_format); |
||
| 483 | } |
||
| 484 | |||
| 485 | /** |
||
| 486 | * returns parameter names that the function was passed, as well as any predefined symbols before function |
||
| 487 | * call (modifiers). |
||
| 488 | * |
||
| 489 | * @param array $trace |
||
| 490 | * |
||
| 491 | * @return array($params, $modifiers, $callee, $caller, $miniTrace) |
||
| 492 | */ |
||
| 493 | private static function getCalleeInfo($trace, $num_params) |
||
|
0 ignored issues
–
show
$num_params does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
The parameter $num_params is not named in camelCase.
This check marks parameter names that have not been written in camelCase. In camelCase names are written without any punctuation, the start of each new word being marked
by a capital letter. Thus the name database connection string becomes Loading history...
|
|||
| 494 | { |
||
| 495 | Kint_Parser_Trace::normalizeAliases(self::$aliases); |
||
| 496 | $miniTrace = array(); |
||
| 497 | |||
| 498 | View Code Duplication | foreach ($trace as $index => $frame) { |
|
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. Loading history...
|
|||
| 499 | if (Kint_Parser_Trace::frameIsListed($frame, self::$aliases)) { |
||
| 500 | $miniTrace = array(); |
||
| 501 | } |
||
| 502 | |||
| 503 | if (!Kint_Parser_Trace::frameIsListed($frame, array('spl_autoload_call'))) { |
||
| 504 | $miniTrace[] = $frame; |
||
| 505 | } |
||
| 506 | } |
||
| 507 | |||
| 508 | $callee = reset($miniTrace); |
||
| 509 | $caller = next($miniTrace); |
||
| 510 | if (!$callee) { |
||
| 511 | $callee = null; |
||
| 512 | } |
||
| 513 | if (!$caller) { |
||
| 514 | $caller = null; |
||
| 515 | } |
||
| 516 | |||
| 517 | unset($miniTrace[0]); |
||
| 518 | |||
| 519 | foreach ($miniTrace as $index => &$frame) { |
||
| 520 | if (!isset($frame['file'], $frame['line'])) { |
||
| 521 | unset($miniTrace[$index]); |
||
| 522 | } else { |
||
| 523 | unset($frame['object'], $frame['args']); |
||
| 524 | } |
||
| 525 | } |
||
| 526 | |||
| 527 | $miniTrace = array_values($miniTrace); |
||
| 528 | |||
| 529 | if (!isset($callee['file'], $callee['line']) || !is_readable($callee['file'])) { |
||
| 530 | return array(null, array(), $callee, $caller, $miniTrace); |
||
| 531 | } |
||
| 532 | |||
| 533 | // open the file and read it up to the position where the function call expression ended |
||
| 534 | if (empty($callee['class'])) { |
||
| 535 | $callfunc = $callee['function']; |
||
| 536 | } else { |
||
| 537 | $callfunc = array($callee['class'], $callee['function']); |
||
| 538 | } |
||
| 539 | |||
| 540 | $calls = Kint_SourceParser::getFunctionCalls( |
||
| 541 | file_get_contents($callee['file']), |
||
| 542 | $callee['line'], |
||
| 543 | $callfunc |
||
| 544 | ); |
||
| 545 | |||
| 546 | $return = array(null, array(), $callee, $caller, $miniTrace); |
||
| 547 | |||
| 548 | foreach ($calls as $call) { |
||
| 549 | $is_unpack = false; |
||
|
0 ignored issues
–
show
$is_unpack does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 550 | |||
| 551 | // Handle argument unpacking as a last resort |
||
| 552 | if (KINT_PHP56) { |
||
| 553 | foreach ($call['parameters'] as $i => &$param) { |
||
| 554 | if (strpos($param['name'], '...') === 0) { |
||
| 555 | if ($i === count($call['parameters']) - 1) { |
||
| 556 | for ($j = 1; $j + $i < $num_params; ++$j) { |
||
|
0 ignored issues
–
show
$num_params does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 557 | $call['parameters'][] = array( |
||
| 558 | 'name' => 'array_values('.substr($param['name'], 3).')['.$j.']', |
||
| 559 | 'path' => 'array_values('.substr($param['path'], 3).')['.$j.']', |
||
| 560 | 'expression' => false, |
||
| 561 | ); |
||
| 562 | } |
||
| 563 | |||
| 564 | $param['name'] = 'reset('.substr($param['name'], 3).')'; |
||
| 565 | $param['path'] = 'reset('.substr($param['path'], 3).')'; |
||
| 566 | $param['expression'] = false; |
||
| 567 | } else { |
||
| 568 | $call['parameters'] = array_slice($call['parameters'], 0, $i); |
||
| 569 | } |
||
| 570 | |||
| 571 | $is_unpack = true; |
||
|
0 ignored issues
–
show
$is_unpack does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 572 | break; |
||
| 573 | } |
||
| 574 | } |
||
| 575 | } |
||
| 576 | |||
| 577 | if ($is_unpack || count($call['parameters']) === $num_params) { |
||
|
0 ignored issues
–
show
$is_unpack does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 578 | if ($return[0] === null) { |
||
| 579 | $return = array($call['parameters'], $call['modifiers'], $callee, $caller, $miniTrace); |
||
| 580 | } else { |
||
| 581 | // If we have multiple calls on the same line with the same amount of arguments, |
||
| 582 | // we can't be sure which it is so just return null and let them figure it out |
||
| 583 | return array(null, array(), $callee, $caller, $miniTrace); |
||
| 584 | } |
||
| 585 | } |
||
| 586 | } |
||
| 587 | |||
| 588 | return $return; |
||
| 589 | } |
||
| 590 | |||
| 591 | public static function composerGetExtras($key = 'kint') |
||
| 592 | { |
||
| 593 | $extras = array(); |
||
| 594 | |||
| 595 | if (!KINT_PHP53) { |
||
| 596 | return $extras; |
||
| 597 | } |
||
| 598 | |||
| 599 | $folder = KINT_DIR.'/vendor'; |
||
| 600 | |||
| 601 | for ($i = 0; $i < 4; ++$i) { |
||
| 602 | $installed = $folder.'/composer/installed.json'; |
||
| 603 | |||
| 604 | if (file_exists($installed) && is_readable($installed)) { |
||
| 605 | $packages = json_decode(file_get_contents($installed), true); |
||
| 606 | |||
| 607 | foreach ($packages as $package) { |
||
| 608 | View Code Duplication | if (isset($package['extra'][$key]) && is_array($package['extra'][$key])) { |
|
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. Loading history...
|
|||
| 609 | $extras = array_replace($extras, $package['extra'][$key]); |
||
| 610 | } |
||
| 611 | } |
||
| 612 | |||
| 613 | $folder = dirname($folder); |
||
| 614 | |||
| 615 | if (file_exists($folder.'/composer.json') && is_readable($folder.'/composer.json')) { |
||
| 616 | $composer = json_decode(file_get_contents($folder.'/composer.json'), true); |
||
| 617 | |||
| 618 | View Code Duplication | if (isset($composer['extra'][$key]) && is_array($composer['extra'][$key])) { |
|
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. Loading history...
|
|||
| 619 | $extras = array_replace($extras, $composer['extra'][$key]); |
||
| 620 | } |
||
| 621 | } |
||
| 622 | |||
| 623 | break; |
||
| 624 | } else { |
||
| 625 | $folder = dirname($folder); |
||
| 626 | } |
||
| 627 | } |
||
| 628 | |||
| 629 | return $extras; |
||
| 630 | } |
||
| 631 | |||
| 632 | public static function composerGetDisableHelperFunctions() |
||
|
0 ignored issues
–
show
function composerGetDisableHelperFunctions() does not seem to conform to the naming convention (^(?:is|has|should|may|supports)).
This check examines a number of code elements and verifies that they conform to the given naming conventions. You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods. Loading history...
|
|||
| 633 | { |
||
| 634 | $extras = self::composerGetExtras(); |
||
| 635 | |||
| 636 | return !empty($extras['disable-helper-functions']); |
||
| 637 | } |
||
| 638 | } |
||
| 639 |
This check examines a number of code elements and verifies that they conform to the given naming conventions.
You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods.