将字符串传递给函数的最佳方法?

时间:2010-09-18 12:24:26

标签: php string function

从安全角度将字符串传递给函数的最佳方法是什么。我知道我可以使用全局变量,会话和函数字符串。像函数测试($ string)。什么是最好的方法?如果有人知道,请告诉我。

我正在尝试写这样的东西,例如:

$url = 'http://domain.com/';

function test() {
  echo $url;
}

但如果可能不使用全局变量或函数字符串。如上所述。

也许我可以使用define和定义?

4 个答案:

答案 0 :(得分:0)

我得到了它们,我使用了define。这是一个例子:

define('URL', 'http://domain.com/');

function test() {
  echo URL;
}

但如果你有其他人知道其他方式,请回复。

答案 1 :(得分:0)

奇怪的是,我认为如果你从安全角度提出纯粹,我会说使用全局变量将数据传递给函数是最好的。

“哇!你是心理?”我听你问了吗?

这就像取消安全带的想法,而是将锋利的6英寸长钉固定在所有方向盘上。这会改变你的驾驶行为,不是吗?你一夜之间成为世界上最安全的司机!

所以,如果你强迫自己使用全局变量作为参数,你必须确保你的函数尽可能多地对这些数据进行安全性检查,因为你无法确定你的调用者已经处理过了。

当然,就像方向盘钉一样,这是一个完全荒谬的建议。 在现实世界中,您尽可能使用函数参数:更容易测试,更容易阅读,允许递归调用等...更多OO方法可能是使用获取原始数据的类在其构造函数中,并将经过验证的数据放入其成员变量中以供其他类方法使用。

让downvotes开始:)

答案 2 :(得分:0)

好的,这是我刚才想到的另一个答案,这对我来说已经足够了。

define('XML', 'file.xml');

然后在函数中做这样的事情

function test()
  $xml = simplexml_load_file(XML);
}

这样至少我不需要在每个函数中更改“file.xml”名称: - )

答案 3 :(得分:0)

尝试使用$ GLOBALS数组

function test() {
  echo $GLOBALS['url'];
}

function test() {
  global $url;
  echo $url;
}

相关问题