问题标签 [magic-constants]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6335 浏览

php - PHP从日志事件中获取行号

好的,我对我的日志记录类有另一个问题但我希望能够将调用脚本的行号添加到日志文件条目中。

我见过__Line __ 但这给了我所在行的行号。

例子:

一个.php

现在,在 debug() 的 Logger.php 类中,我使用了__Line __ 魔术常量,例如第 300 行。当我运行脚本时,我希望日志条目显示为“第 20 行”,但它显示为“第 300 行”。除了将行号传递给函数之外,还有其他方法可以做到这一点吗?

示例调试类函数

编辑:debug_backtrace() 很好用!!!在下面工作

0 投票
3 回答
3368 浏览

php - 使用 PHP 魔术常量的最佳实践

使用 PHP 魔术常量(例如__LINE____FILE__、和__FUNCTION__)的最佳实践是什么?__CLASS____METHOD__

例如,我使用__LINE__ and__CLASS__来定位 SQL 错误,如下所示:

这是可接受的做法吗?

0 投票
1 回答
4985 浏览

php - Python 相当于 PHP 的 __DIR__ 魔术常数?

在 PHP 中,__DIR__魔术常量计算为包含该常量出现的文件的目录的路径。

Python中是否有等效的功能?

0 投票
4 回答
15384 浏览

php - 从 include() 获取调用文件名

我想从包含的文件中获取包含另一个文件的文件的名称。

我知道有__FILE__魔法常数,但这没有帮助,因为它返回包含文件的名称,而不是包含文件的名称。

有没有办法做到这一点?或者由于 PHP 的解释方式是不可能的?

0 投票
3 回答
176 浏览

php - 如何在不评估或扩展魔术常数 __DIR__ 的情况下编写或打开 php 数组

我有一个配置文件,它是一个名为 config.php 的 php 数组。

然后每当我想使用这个配置文件时,我只需要包含 config.php。用这种方式编写配置文件也很容易。

但是我希望能够在不扩展的情况下将魔术常量DIR写入配置文件。到目前为止,我还没有想出一种方法来做到这一点。我已经尝试了一切来编写一个 recursiveArrayReplace 方法来删​​除整个路径并尝试将其替换为

但它总是出现

在这种情况下,它在运行时不会扩展。

我该怎么写

0 投票
2 回答
721 浏览

php - 任何人都知道类中特征重新定义名称的 PHP 魔术常量吗?

为了简单起见,我注意到 PHP 似乎没有提供任何神奇的常量来确定一个特征在一个类中被更改为什么名称。因为这听起来让我感到困惑,所以我将举一个例子,因为它相当简单,并且希望它出现在新的 PHP 5.5 中,我看不出有什么方法可以做到。所以这里是:

假设我们有一些类,它使用了一些与类中的某些函数冲突的特征,例如:

因为,显然这个类有“SomeFunction”函数,而且我们知道在 SomeTrait 中我们包含了一个函数,它的名称与我们在这个类中的函数匹配。现在,由于“SomeFunction”通过 \Name\Space 内部的特征进入这个类,这两个函数做了 2 件不同的事情,但碰巧使用相同的名称,并且在另一个函数内部或字面上是我们的“SomeFunction” ,然后我们使用 trait 中的“SomeFunction”,通过“NewFunctionName”调用它。

所以希望我没有在这里失去任何人,因为这就是我在上述情况下的问题。在 \Name\Space\SomeTrait\SomeFunction() 中,如何获得也分配了该特征函数的“NewFunctionName”?有人会考虑使用一种魔术方法,例如__ FUNCTION ____ METHOD __,甚至__ TRAIT __,除非这些方法都没有给出预期的结果,所以有没有人知道一种方法来获取此信息而不将其传递给函数作为参数并导致hacky代码?也许 PHP 5.6 需要添加一个新的 Magic Constant __AS __,或者调整__ TRAIT的结果__,我不明白为什么__ TRAIT ____ FUNCTION _需要返回相同的信息(或几乎相同的信息)。任何帮助都会很棒,如果它是一种非常规的hacky方法,我有兴趣看到我的选项,直到我可以用php打开一个关于这个的错误报告。(如果它真的是一个错误)

编辑:

我目前的,最不老套的方法似乎是,

虽然它有效,但我觉得获得一个简单的字符串需要做很多事情,特别是如果你经常使用这个函数。:/

0 投票
1 回答
476 浏览

php - PHP魔术常量不起作用

当我输入这个 PHP 代码时,魔术常量_LINE_只是按字面意思输出。

输出:

我究竟做错了什么?

0 投票
1 回答
200 浏览

debugging - Dart:魔术常数等价物

PHP 提供了有用的魔法常量,例如:

等等。还有

函数提供了类似的功能。

Dart中是否有类似的东西?

0 投票
3 回答
4089 浏览

php - Xdebug weird __DIR__ constant

I am writing an PHP CLI app which loads YAML files. When trying to do this within an Xdebug session:

__DIR__ allways is xdebug: which will allways lead to false from file_exists().

Is there any work around?

0 投票
4 回答
9280 浏览

php - 当前 PHP 脚本相对于文档根目录的路径

TL;DR:当尝试在 PHPinclude命令包含的页面上使用相对链接时,有哪些替代此页面上的最后一个代码示例的方法?


我正在尝试include()链接到文档的.css文件,问题是我需要从多个(不同)目录中包含此文件。我的目录结构有点像这样:

(我header.php在两个index.php文件中都包含。header.php是引用的文件style.css(浏览器需要能够找到)。示例:使用../css/style.css时,CSS 将显示在 mycontent/index.php但不在 my 中content/posts/index.php,因为浏览器正在寻找content/css/index.php.)

当放置在文档根目录的子目录中时,该网站也应该可以工作,而不是在文档根目录本身。出于这个原因,我不能只使用/css/style.css(相对于服务器根)链接到我的 CSS 样式表。

我认为(如果我错了,请纠正我!)告诉浏览器在哪里可以找到 CSS 文档的最简单方法可能是指定相对于文档 root的路径。因为我希望我的网站位于文档根目录的子目录中(并且希望避免使用config文件来存储子目录),所以我需要找出网站所在子目录的相对路径。我的想法是放置getpath.php在我网站的根目录(不是文档根目录)中调用的文件。在那个文件中,我写了以下内容:

但是,我注意到这给了我用户在浏览器中请求的 PHP 文件的相对目录(例如content/index.php),而不是包含的文件(getpath.php)。我也读过那PHP_SELF是基于的REQUEST_URI,这不安全。我在这里找到了这个解决方案:

它工作得很好,但我想知道是否有“更好”的方法来做到这一点。我没有找到一个变量——上面的解决方案真的是唯一的方法吗?

我应该使用前面的代码示例还是有更好的方法?
我应该改变我的目录结构吗?其他人如何解决这个问题?


编辑:我的网络服务器上有多个(完全独立的)网站,它们都在文档根目录的子目录中(例如/documentroot/project1/,,/documentroot/project2/...)
我试图让网站在子目录中工作。我显然可以通过 将 CSS 发送到浏览器/css/style.css,但如果网站位于子目录中,这将不起作用。我还想避免使用配置文件来指定我的项目相对于文档根目录的路径。


另一个编辑:问题是我项目中的每个 php 文件都/documentroot/project1包含一个使用 PHPinclude函数的导航栏。导航栏保存为/documentroot/project1/php/header.php,导航栏的 css 保存为/documentroot/project1/css/style.css. 当使用相对链接(告诉浏览器在哪里style.css)时,浏览器仍然认为路径是相对于index.php而不是相对的header.php,所以它会在与index.php.
问题:不同目录中有多个 index.php 文件,我不想将我的 CSS 文件夹复制并粘贴到每个包含index.php文件的目录中。