predefinidas parametros otro manejo llamar función funciones funcion ejemplos desde cuál php

parametros - Función de llamada en PHP 5



llamar funcion php desde otro php (12)

De hecho, creo que debug_print_backtrace () hace lo que necesita. http://php.net/manual/en/function.debug-print-backtrace.php

¿Hay una función PHP para averiguar el nombre de la función de llamada en una función determinada?


Este funcionó mejor para mí: var_dump(debug_backtrace());


Esto debería funcionar:

$caller = next(debug_backtrace())[''function''];


Esto es muy tarde, pero me gustaría compartir la función que dará el nombre de la función a partir de la cual se llama a la función actual.

public function getCallingFunctionName($completeTrace=false) { $trace=debug_backtrace(); if($completeTrace) { $str = ''''; foreach($trace as $caller) { $str .= " -- Called by {$caller[''function'']}"; if (isset($caller[''class''])) $str .= " From Class {$caller[''class'']}"; } } else { $caller=$trace[2]; $str = "Called by {$caller[''function'']}"; if (isset($caller[''class''])) $str .= " From Class {$caller[''class'']}"; } return $str; }

Espero que esto sea útil.



Hecho esto y usando esto yo mismo

/** * Gets the caller of the function where this function is called from * @param string what to return? (Leave empty to get all, or specify: "class", "function", "line", "class", etc.) - options see: http://php.net/manual/en/function.debug-backtrace.php */ function getCaller($what = NULL) { $trace = debug_backtrace(); $previousCall = $trace[2]; // 0 is this call, 1 is call in previous function, 2 is caller of that function if(isset($what)) { return $previousCall[$what]; } else { return $previousCall; } }


Puede extraer esta información de la matriz devuelta por debug_backtrace


Solo quería decir que la forma de Flori no funcionará como una función porque siempre devolverá el nombre de la función llamada en lugar de la persona que llama, pero no tengo reputación para comentar. Hice una función muy simple basada en la respuesta de flori que funciona bien para mi caso:

class basicFunctions{ public function getCallerFunction(){ return debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS, 3)[2][''function'']; } }

EJEMPLO:

function a($authorisedFunctionsList = array("b")){ $ref = new basicFunctions; $caller = $ref->getCallerFunction(); if(in_array($caller,$authorisedFunctionsList)): echo "Welcome!"; return true; else: echo "Unauthorised caller!"; return false; endif; } function b(){ $executionContinues = $this->a(); $executionContinues or exit; //Do something else.. }


Ver debug_backtrace : esto puede rastrear tu pila de llamadas hasta llegar a la cima.

Así es como obtendrías a tu interlocutor:

$trace = debug_backtrace(); $caller = $trace[1]; echo "Called by {$caller[''function'']}"; if (isset($caller[''class''])) echo " in {$caller[''class'']}";


Xdebug proporciona algunas funciones agradables.

<?php Class MyClass { function __construct(){ $this->callee(); } function callee() { echo sprintf("callee() called @ %s: %s from %s::%s", xdebug_call_file(), xdebug_call_line(), xdebug_call_class(), xdebug_call_function() ); } } $rollDebug = new MyClass(); ?>

devolverá el rastro

callee() called @ /var/www/xd.php: 16 from MyClass::__construct

Para instalar Xdebug en ubuntu, la mejor manera es

sudo aptitude install php5-xdebug

Es posible que tengas que instalar php5-dev primero

sudo aptitude install php5-dev

más información


debug_backtrace() proporciona detalles de parámetros, llamadas de función / método en la pila de llamadas actual.


echo debug_backtrace()[1][''function''];

Funciona desde PHP 5.4 .

O optimizado (por ejemplo, para casos de uso sin errores):

echo debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS, 2)[1][''function''];

El primer argumento impide rellenar argumentos de función no utilizados, el segundo limita el rastreo a dos niveles (necesitamos el segundo).