Comment enregistrer le nom du fichier / ligne qui appelle la fonction en cours en PHP?
-
18-09-2019 - |
Question
Je suis en train d'écrire une classe d'exploitation forestière légère en php.
Comment puis-je enregistrer automatiquement le nom de fichier / fonction / numéro de ligne où la fonction dans la classe Log est appelé à partir et d'enregistrer le numéro de la ligne et du temps et des choses sans faire mes utilisateurs s'embêter avec entrer $__LINE__
et $__FILE__
chaque fois qu'ils appellent la fonction. Y at-il quelque chose que je peux appeler implicitement.
Exemple:
class Log {
static private $instance;
static $logfile;
private function __construct(){
// doesn't need to do anything
// one logging object to avoid/control future/potential race conditions
}
public function getInstance(){
if(!Self::$instance) {
Self::$instance = new Log();
} else {
return Self::$instance;
}
}
public function criticalLog($string){
// I want this to be logging line number, filename
}
}
Maintenant, je veux être en mesure de quelque chose comme dans le fichier par exemple api.php ligne numéro 15
logInstance.criticalLog("This log is important");
Dans mon fichier journal, je voudrais voir
12/10/09-11:15 api.php 15 This log is important
Toutes les idées? J'ai eu un coup d'oeil à des solutions de PEAR et log4php, mais ils semblent assez lourd pour ce que je veux.
La solution
Jetez un oeil à la fonction debug_backtrace , il semblerait il fournit toutes les informations dont vous avez besoin:
function, line, file, class, object, type, args
Autres conseils
constantes magiques: http://www.php.net/ manuel / fr / language.constants.predefined.php