Random String作为相同的字符串传递给php

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Random String作为相同的字符串传递给php相关的知识,希望对你有一定的参考价值。

尝试使用php和Behat创建功能测试,我想要一个随机字符串用于电子邮件,但我希望每次新测试运行时字符串都是随机的,但我想将创建的相同字符串作为参数传递给不同的测试。

因此,如果我生成一个10位数字符串,我想生成字符串,然后通过其他测试将其作为相同的10位数序列传递

我是PHP的新手,所以我不太确定如何设置它,但这是我目前在Behat上下文文件中的内容

class FeatureContext implements Context {

private $MailPage;
private $registrationpage;


/**
 * Initializes context.
 *
 * Every scenario gets its own context instance.
 * You can also pass arbitrary arguments to the
 * context constructor through behat.yml.
 */
public function __construct(MailPage $mailPage, RegistrationPage $registrationpage)
{
    // Page obects injected directly in constructor with type hints.
    $this->MailPage = $MailPage;
    $this->registrationpage = $registrationpage;
}

/**
 * @BeforeSuite
 */
public static function  generateRandomString() {

    // Generate random string for Email implementation.
    $randomString = bin2hex(openssl_random_pseudo_bytes(10));
    return $randomString;

}


/**
 * @Given /^I register a temporary email address $/
 */
public function iRegisterATemporaryEmailAddress()
{
    $this->MailPage->grabNewEmail(self::generateRandomEmail());
}

/**
 * @Given /^I register a Developer account$/
 */
public function iRegisterADeveloperAccount()
{

    $this->registrationpage->fillInFormDetails(self::generateRandomEmail());
}

我遇到的问题是,使用参数原样,它每次调用时都会生成一个不同的字符串,但我只希望它为整个套件生成一次。有任何想法吗?

答案

1-从构造函数中调用方法。

2-使用this将生成的值保存在变量中

private $randomString ;
public function __construct(MailPage $mailPage, RegistrationPage $registrationpage)
{
   //your code
   $this->randomString = $this->generateRandomString();

}

3-要使用此变量,您可以在类$this->randomString等类方法中调用它。

具有构造函数方法的类在每个新创建的对象上调用此方法,因此它适用于对象在使用之前可能需要的任何初始化。

以上是关于Random String作为相同的字符串传递给php的主要内容,如果未能解决你的问题,请参考以下文章

将字符串数组作为 POST 传递给 PHP

dbms_random.string 生成任意字符串

将模式名称作为变量传递给查询的最佳方法

如何通过引用传递子字符串?

将字符串数组作为缓冲区传递给 C++ 到 C#

如何在函数中交换作为指针传递的 2 个字符串?