Поэтому я пытаюсь создать переменный класс, что означает, что я могу динамически называть свои переменные. И я хотел иметь 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.
}
Хотя это тоже не сработало, выбросив ошибку.
Ты можешь использовать 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"}
}
Других решений пока нет …