我有一个功能
function createRandomString($length) {
$string = md5(time());
$highest_startpoint = 32-$length;
# use hexdec to get a "number only" format
$randomString = hexdec(substr($string,rand(0,$highest_startpoint),$length));
return $randomString;
}
$randomID = createRandomString(7);
我希望能够使用在其他函数中创建的随机字符串
例如:
function new() {
echo '<input name="id" type="text" value="'.$randomID.'" disabled="disabled">';
}
然而随机ID不会出现在新功能中(也就是空白)。
我需要将随机ID定义为变量一次,以便数字在整个脚本中保持不变,因为如果我在每个函数中定义它,您将使用此方法获得不同的数字。
有没有办法使用顶部的脚本定义变量randomID并在调用它的所有函数中保持不变?
答案 0 :(得分:2)
好吧,虽然我建议反对它,但是你在new
函数中尝试做的最简单的修复是:
function new()
{
global $randomID;
echo '<input....'.$randomID.'/>';
}
但是还有一些更好的方法可以达到相同的效果:
使用类:
class randomOutput
{
protected static $_randomID;
public function __construct()
{
self::$_randomID;//can be initialized here, using the same code you have in your createRandomId function
}
public function output()
{
echo '<input...'.self::$_randomID.'/>';
}
}
正如Zulkhaery Basrul的回答所显示的那样,使用论证。您可以通过在函数defenition中给出默认值null
来使参数可选。function new($id)
{
echo '<input...'.$id.'/>';
}
//with default val:
function new($id = null)
{
$id = ($id === null ? createRandomId(7) : $id);
echo '<input...'.$id.'/>';
}
$randId = createRandomId(7);
new($randId);
//some time later
new($randId);
声明常量:
function createRandomString($length)
{
if (defined(RANDOM_STRING_CONST))
{
return RANDOM_STRING_CONST;
}
//make your randomID, then:
define('RANDOM_STRING_CONST',$randomID);
return RANDOM_STRING_CONST;
}
类也有常量。您可以在抽象类中定义它们,因此所有子类都可以访问相同的randomId。作为额外的奖励(和潜在陷阱)类常量,在父级别定义可以被子类推翻。所以要小心!
答案 1 :(得分:1)
一种方法是使用全局变量。见http://php.net/manual/en/language.variables.scope.php
但是,使用全局变量被认为是糟糕的编程习惯。最好将代码正确地组织到类中,然后使用类和实例变量。
我建议您阅读一本关于PHP或面向对象编程原理的好书。
答案 2 :(得分:0)
<?php
function createRandomString($length) {
$string = md5(time());
$highest_startpoint = 32-$length;
# use hexdec to get a "number only" format
$randomString = hexdec(substr($string,rand(0,$highest_startpoint),$length));
return $randomString;
}
$randomID = createRandomString(7);
function newfunction($arg) {
echo '<input name="id" type="text" value="'.$arg.'" disabled="disabled">';
}
newfunction($randomID);
?>