gpt4 book ai didi

php - 查找在 PHP(和/或 SMARTY)中定义变量的位置?

转载 作者:可可西里 更新时间:2023-10-31 23:02:32 24 4
gpt4 key购买 nike

我目前正在从事一个非常大的项目,并且面临着尽快完成它的巨大压力,而且我遇到了一个严重的问题。编写最后这个定义变量的程序员以一种非常奇怪的方式——配置变量并不都在同一个文件中,它们分布在整个项目中,包含 500 多个文件和 100k+ 行代码,我有弄清楚某个变量在哪里,这样我就可以解决问题了。
有没有办法追踪这个变量?我相信他正在使用 SMARTY(由于这样的问题我无法忍受),并且变量是模板变量。我相当确定我正在寻找的变量最初被定义为 PHP 变量,然后该变量被传递到 SMARTY,所以我想追踪 PHP 变量,但是如果那不可能 - 我如何追踪在他为 SMARTY 定义变量的地方?

附言我在 Vista 中,无法通过 ssh 访问服务器,因此无法使用“grep”。

最佳答案

蛮力方式,因为有时 smarty 变量不是直接分配的,但它们的名称可以存储在变量中,由许多字符串连接或者是某些函数的结果,这使得通过简单的搜索/greping 无法在文件中找到。

首先,编写自己的函数来打印可读的回溯,即:

function print_backtrace()
{
$backtrace = debug_backtrace(FALSE);
foreach($backtrace as $trace)
echo "{$trace['file']} :: {$trace['line']}<br>";
}

打开主要的 smarty 文件(默认为 Smarty.class.php),在第 580 行附近有一个名为 assign 的函数。修改它以监视所需的变量名称:

function assign($tpl_var, $value = null)
{
if($tpl_var == 'FOOBAR') /* Searching for FOOBAR */
{
print_backtrace();
exit;
}

第二个函数可能需要相同的修改 - assign_by_ref。现在运行脚本后你应该有这样的输出:

D:\www\test_proj\libs\smarty\Smarty.class.php :: 584
D:\www\test_proj\classes.php :: 11
D:\www\test_proj\classes.php :: 6
D:\www\test_proj\functions.php :: 7
D:\www\test_proj\index.php :: 100

第二行指向变量第一次赋值的地方。

关于php - 查找在 PHP(和/或 SMARTY)中定义变量的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2970806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com