Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将字符串传递给函数的最佳方法?_Php_String_Function - Fatal编程技术网

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

Php 将字符串传递给函数的最佳方法?,php,string,function,Php,String,Function,从安全角度来看,将字符串传递给函数的最佳方式是什么。我知道我可以使用全局、会话和函数字符串。比如函数测试($string)。最好的方法是什么?如果有人知道,请告诉我 我试着写一些像这样的东西,例如: $url = 'http://domain.com/'; function test() { echo $url; } 但如果可能的话,不要使用全局变量或函数字符串。如上所述 也许我可以用define和defined?我知道了,伙计们,我用define。下面是一个例子: define('UR

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

我试着写一些像这样的东西,例如:

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

function test() {
  echo $url;
}
但如果可能的话,不要使用全局变量或函数字符串。如上所述


也许我可以用define和defined?

我知道了,伙计们,我用define。下面是一个例子:

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

function test() {
  echo URL;
}

但如果你知道其他方法,请回答。

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

“哇!你疯了吗?”我听见你问

这就像是取消安全带的想法,而是在所有方向盘上安装一个6英寸的尖头。那会改变你的驾驶行为,不是吗?你一夜之间就成了世界上最安全的司机

因此,如果您强迫自己使用globals作为参数,您将确保您的函数对该数据进行尽可能多的安全检查,因为您无法确定您的调用者是否处理了该数据

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


让反对票开始吧:)

好的,我刚刚想出了另一个答案,对我来说已经足够好了

define('XML', 'file.xml');
然后在函数中做这样的事情

function test()
  $xml = simplexml_load_file(XML);
}
这样,如果我需要在每个函数中更改“file.xml”名称,至少我不需要这样做:-)

尝试使用$GLOBALS数组
功能测试(){
echo$GLOBALS['url'];
}

功能测试(){
全球$url;
echo$url;

}

我不明白你的意思。绳子是从哪里来的?
函数测试($url){echo$url;}
?@codaddict,谢谢你编辑我的帖子,我是瞎子,没有看到那个代码按钮。@Pekka,我找到了,伙计。我现在用的是define,就是这样定义('XML',simple_XML_load('file.XML');不起作用lol这很好。向函数传递字符串的正常方法是使用参数。你到底想做什么?我认为globals更不安全:)使用define足够安全吗?我只是开玩笑,这个问题有点傻。不管你使用什么技术,你仍然必须检查数据是否正常。@Paul Dixon,我不同意:-)是的,你需要像我一样检查数据。但是有更好的方法,但是你从安全的角度提出你的问题,并且没有什么可以根据这些理由来区分不同的技术。正如您所建议的,使用常量并不能真正提供参数传递机制,因为它是不变的(或者应该是不变的!)为什么您有多个函数都在读取同一个文件?一个函数就足够了,如果您需要在多个位置使用xml,那么就调用该函数并使用结果——根本不需要将文件名保持在常量中。 function test() { echo $GLOBALS['url']; } function test() { global $url; echo $url; }