Дайте функции переменную __LINE__ без необходимости объявлять ее

Поэтому я пытаюсь создать переменный класс, что означает, что я могу динамически называть свои переменные. И я хотел иметь undeclared variable at line x в моем коде. Мне удалось заставить функцию вызываться так:

function ($varname, $line = 0) {
// Example
echo 'unknwon variable found at line '.$line;
}

Но я хотел быть в состоянии удалить line = 0 функции и вместо этого просто дать ему строку без необходимости вызова функции, как:

exampleFunction('Name', __LINE__);

И вместо этого назовите это как:

exampleFunction('Name');

И __LINE__ переменная передается вместе с ней вместо необходимости включать ее. — Я попытался сделать так, чтобы вызываемая функция выглядела так:

exampleFunction($varname, __LINE__) {
// Executed code.
}

Хотя это тоже не сработало, выбросив ошибку.

0

Решение

Ты можешь использовать debug_backtrace метод в вашем exampleFunction чтобы получить информацию о звонящем с линией.

http://php.net/manual/tr/function.debug-backtrace.php

Пример (скопировано с php.net)

<?php
// /tmp/a.php dosyası

function a_test($str)
{
echo "\nHi: $str";
var_dump(debug_backtrace());
}

a_test('friend');
?>

<?php
// /tmp/b.php dosyası
include_once '/tmp/a.php';
?>

Какие выводы:

Hi: friend
array(2) {
[0]=>
array(4) {
["file"] => string(10) "/tmp/a.php"["line"] => int(10)
["function"] => string(6) "a_test"["args"]=>
array(1) {
[0] => &string(6) "friend"}
}
[1]=>
array(4) {
["file"] => string(10) "/tmp/b.php"["line"] => int(2)
["args"] =>
array(1) {
[0] => string(10) "/tmp/a.php"}
["function"] => string(12) "include_once"}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]