【问题标题】:Can you print the name of an include as code is executed within it?当代码在其中执行时,您可以打印包含的名称吗?
【发布时间】:2020-07-19 10:19:10
【问题描述】:

我正在尝试为自己创建一个小型开发实用程序,以便在本地处理我的代码时打印查询以及它们在其中执行的文件的名称。

假设我有这个页面:

<h1>Page</h1>
<?php include('file.php')?>

file.php 里面有一个查询

$query_clients = query('SELECT * FROM clients');
while($client = mysqli_fetch_array($query))

function query() 可以选择打印查询 $string

有没有办法在页面加载时出现这样的结果?

<h1>Page</h1>
file.php
SELECT * FROM clients

所以当query() 被执行时,我可以打印运行query() 函数的文件吗?这样我就可以看到执行的查询,以及执行它的文件。

我知道我可以使用get_included_files 来显示所有包含,但是我可以在执行时显示包含名称吗?

我也不想将包含转换为打印的字符串,因为这将需要更改数百行代码,从而破坏了拥有简单工具的目的。或者必须创建我自己的 include() 包装器,例如 include_then_print()

__FILE__ 对我不起作用,因为它只是打印我的 include/funcitons.php 文件 $_SERVER["SCRIPT_NAME"] $_SERVER['PHP_SELF'] 不起作用,因为它们只是当前文件名

【问题讨论】:

  • 我认为 PHP 中不存在这样的事情,我能想到的唯一解决方案是最终编写自己的 include()query()
  • 谢谢伙计,我想了很多,但希望有一些我不知道的功能。在运行时回显我的查询让我在上下文中查看每个查询并更快地识别优化。 Xdebug 很全面但是很麻烦。
  • 使用诸如print_r(debug_backtrace(1)); 之类的debug_backtrace 会有帮助吗?
  • 太棒了,它似乎确实提供了一个以执行代码的文件开头的数组。我现在正试图将它合并到我的函数中,一旦它工作,我将发布为 aswer。或者您可以发布自己的,我会选择正确答案。
  • 您可以在您调用的文件中使用魔术常量__FILE__

标签: php


【解决方案1】:

谢谢 Ruperto,这正是我想要的

$filename = debug_backtrace(1);
echo(reset($filename[0]));

返回

C:\[localpath]\file.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多