gpt4 book ai didi

php - PHP 类中的外部变量访问

转载 作者:可可西里 更新时间:2023-11-01 00:01:46 25 4
gpt4 key购买 nike

考虑以下情况

文件:./include/functions/table-config.php包含:

.
.
$tablePages = 'orweb_pages';
.
.

文件:./include/classes/uri-resolve.php包含:

class URIResolve {
.
.
$category = null ;
.
.
function process_uri() {
...
$this->category = $tablePages;
...
}
.
.
}

文件:./settings.php包含:

.
.
require_once(ABSPATH.INC.FUNC.'/table-config.php');
require_once(ABSPATH.INC.CLASS.'/uri-resolve.php');
.
.
这行得通吗?我的意思是从 process_uri() 访问 $tablePages 是可以接受的还是会给出错误的结果。

如果可能发生错误,请提出更正或解决方法。

最佳答案

使用 global keyword :

在您分配值的文件中。

global $tablePages;
$tablePages = 'orweb_pages';

在另一个文件中:

class URIResolve {
var $category;
function process_uri() {
global $tablePages;
$this->category = $tablePages;
}
}

此外,所有全局变量都在 $GLOBALS 数组(它本身是一个超全局变量)中可用,因此您可以在任何地方访问全局变量而无需使用 global 关键字,方法如下:

$my_value = $GLOBALS['tablePages'];

这也使得意外覆盖全局值变得更加困难。在前面的示例中,您对 $tablePages 所做的任何更改都会更改全局变量。许多安全漏洞是通过拥有全局 $user 并用更强大的用户信息覆盖它而产生的。

另一种更安全的方法是在构造函数中为 URIResolve 提供变量:

class URIResolve {
var $category;

function __construct ($tablePages) {
$this->category= $tablePages;
}

function process_uri() {
// Now you can access table pages here as an variable instance
}
}

// This would then be used as:
new URIResolve($tablePages);

关于php - PHP 类中的外部变量访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1033716/

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