【问题标题】:Use variable in an class and in an function with array [duplicate]在类和带有数组的函数中使用变量[重复]
【发布时间】:2020-02-21 22:56:54
【问题描述】:
$n=800; 
function getName($n) { 
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
    $randomString = ''; 

    for ($i = 0; $i < $n; $i++) { 
        $index = rand(0, strlen($characters) - 1); 
        $randomString .= $characters[$index]; 
    } 

    return $randomString; 
} 

$secretcode = getName($n);

class Mess {
    protected static $options = array(
        'secret' => '$secretcode',
        'signing_method' => 'sha512',
        'verify' => true,
    );
}

这是我的 PHP 代码,如图所示,我希望将变量“secretcode”或此变量中的值放入类中的位置,该位置是带有数组的函数。在这个数组中,数组的秘密元素应该是变量值。我听说过全局变量,但我尝试了很多,每次它都会给我错误,具体是我改变了什么,但我不明白为什么事情不起作用。老实说我还没有使用 php 分类所以我不知道它是否与 varibale 不同的用法然后正常。

【问题讨论】:

  • 我看到您对全局变量以及变量在函数和类中如何操作的一般范围感到困惑。我可以建议你阅读一下关于 variable scoping 的 PHP 文档吗?
  • 你试过"$secretcode"(和")吗?
  • 是的,我尝试使用 "" 和 this '' 但它不起作用,它显示错误,但我不知道在其他数组中我也使用 "" 没有问题。
  • 不幸的是,该主题已关闭,这意味着我们无法提供答案。请给这两个重复读作'$secretcode' 是文字字符串,而"$secretcode"$secretcode 相同
  • 我看到了 php 文档并在我的代码上尝试了这个示例,但它不起作用,在变量前面的变量 static 前面有 gloabl,所有显示的例子也是如此

标签: php arrays class variables global-variables


【解决方案1】:

你可以在类中使用它

class Mess {
    protected static $options = array(
     'secret' => '',
     'signing_method' => 'sha512',
     'verify' => true,
    );
    function __construct($number){
      !empty(self::$options['secret']) ? self::$options['secret'] : this->getName($number);
    }
    function getName($n) { 
      $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
      $randomString = ''; 
      for ($i = 0; $i < $n; $i++) { 
        $index = rand(0, strlen($characters) - 1); 
        $randomString .= $characters[$index]; 
      } 
      return $randomString; 
    } 
}

【讨论】:

  • 问题是您使用构造函数来设置静态属性,您可能永远不会创建某些类型的对象,具体取决于它们的使用方式,因此可能永远不会设置秘密。如果创建了对象,它将每次设置一个新的秘密 - 覆盖前一个。
  • @NigelRen 更新了解决方案。
  • 仍然不满足它永远不会被设置!而且它现在根本没有设置值。
  • @NigelRen 期待看到你的答案...:)
  • 不太可能,因为我在 15 分钟前将这个问题作为副本关闭。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-04
  • 2015-10-25
  • 1970-01-01
  • 2016-01-29
  • 1970-01-01
  • 1970-01-01
  • 2021-04-07
相关资源
最近更新 更多