在 Nelmio Alice 中使用没有标准教义装置的自定义伪造数据提供者
Using custom faker data providers without standard doctrine fixtures in Nelmio Alice
我正在设置 NelmioAlice and Faker in a Symfony2 project through AlixeFixturesBundle。我需要一个 composed 夹具,例如:
representative{1..100}:
veeva_rep_id (unique): qlv_005800000067SwzAAE
这是一个 qlv_
前缀,后跟随机的 18 个字符的字符串。我发现完成此操作的最佳方法(如果有人知道另一种方法或更好的方法来完成此操作,请告诉我)是使用自定义伪造器,我编写了这段代码:
<?php
/**
* FakerProvider: VeevaProvider.
*/
namespace PDI\PDOneBundle\DataFixtures;
use ReverseRegex\Lexer;
use ReverseRegex\Random\SimpleRandom;
use ReverseRegex\Parser;
use ReverseRegex\Generator\Scope;
class VeevaProvider extends \Faker\Provider\Base
{
public function veevaRepId()
{
$lexer = new Lexer('[a-zA-Z0-9]{18}');
$gen = new SimpleRandom(10007);
$result = '';
$parser = new Parser($lexer, new Scope(), new Scope());
$parser->parse()->getResult()->generate($result, $gen);
return 'qlv_' . $result;
}
}
正如在 NelmioAlice 上解释的 here in Faker docs. Now, here 作者解释了如何添加 Custom Faker Data Providers 但它使用了 Doctrine Fixtures 我不这样,有这个,如何加载和使用我写在固定装置上的供应商?有什么建议吗?
它应该像在构造它时将提供程序的实例传递给 Loader
一样简单:
$loader = new Loader('en_US', [new VeeveProvider]);
我正在设置 NelmioAlice and Faker in a Symfony2 project through AlixeFixturesBundle。我需要一个 composed 夹具,例如:
representative{1..100}:
veeva_rep_id (unique): qlv_005800000067SwzAAE
这是一个 qlv_
前缀,后跟随机的 18 个字符的字符串。我发现完成此操作的最佳方法(如果有人知道另一种方法或更好的方法来完成此操作,请告诉我)是使用自定义伪造器,我编写了这段代码:
<?php
/**
* FakerProvider: VeevaProvider.
*/
namespace PDI\PDOneBundle\DataFixtures;
use ReverseRegex\Lexer;
use ReverseRegex\Random\SimpleRandom;
use ReverseRegex\Parser;
use ReverseRegex\Generator\Scope;
class VeevaProvider extends \Faker\Provider\Base
{
public function veevaRepId()
{
$lexer = new Lexer('[a-zA-Z0-9]{18}');
$gen = new SimpleRandom(10007);
$result = '';
$parser = new Parser($lexer, new Scope(), new Scope());
$parser->parse()->getResult()->generate($result, $gen);
return 'qlv_' . $result;
}
}
正如在 NelmioAlice 上解释的 here in Faker docs. Now, here 作者解释了如何添加 Custom Faker Data Providers 但它使用了 Doctrine Fixtures 我不这样,有这个,如何加载和使用我写在固定装置上的供应商?有什么建议吗?
它应该像在构造它时将提供程序的实例传递给 Loader
一样简单:
$loader = new Loader('en_US', [new VeeveProvider]);