Dernière activité 1740033025

php

anthony's Avatar anthony a révisé ce gist 1740033025. Aller à la révision

1 file changed, 35 insertions

here.php(fichier créé)

@@ -0,0 +1,35 @@
1 + <?php
2 +
3 + /**
4 + * Returns caller class/file name, function and line where current
5 + *
6 + * Potentially doesn't cover all cases, but is simple and pretty handy for use in frameworks.
7 + *
8 + * @param bool $as_array result as array or string in this format: `<file|class>:<func>():<line>`
9 + * @return string|array
10 + */
11 + function here(bool $as_array = false): string|array
12 + {
13 + $trace = debug_backtrace(!DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS, 2);
14 + return $as_array
15 + ? [
16 + 'from' => $trace[1]['class'] ?? $trace[0]['file'],
17 + 'function' => $trace[1]['function'],
18 + 'line' => $trace[0]['line'],
19 + ]
20 + : sprintf(
21 + '%s%s%s():%s',
22 + $trace[1]['class'] ?? $trace[0]['file'],
23 + $trace[1]['type'] ?? '::',
24 + $trace[1]['function'],
25 + $trace[0]['line']
26 + );
27 + }
28 +
29 + // Usage:
30 + class MyClass {
31 + public function test(): string {
32 + return here();
33 + }
34 + }
35 + echo (new MyClass)->test(); // MyClass->test():4
Plus récent Plus ancien