laravel faker 数据填充 中文数据填充 单元测试数据填充 数据的类型有哪些

laravel faker 数据填充 中文数据填充 单元测试数据填充 数据的类型有哪些?

Installation 安装

laravel5 已经安装,这里不需要安装了,其他框架,可以借鉴。

composer require fzaninotto/faker

Basic Usage 基本用法

Use Faker\Factory::create() 要创建和初始化一个faker生成器,它可以通过访问您想要的数据类型的属性来生成数据。

 1 <?php
 2 // 包含 Faker 的 autoloader
 3 require_once '/path/to/Faker/src/autoload.php';
 4 // 或者,使用另一个psr-0兼容的自动加载器(例如,如Symfony2类加载器)
 5 
 6 // 使用工厂创建一个Faker生成器实例
 7 $faker = Faker\Factory::create('zh_CN'); //如果使用中文填充数据可以加入 ‘zh_CN’, 不需要的可以留空
 8 
 9 // 通过访问属性生成数据
10 echo $faker->name;
11   // 'Lucy Cechtelar';
12 echo $faker->address;
13   // "426 Jordy Lodge
14   // Cartwrightshire, SC 88120-6700"
15 echo $faker->text;
16   // Dolores sit sint laboriosam dolorem culpa et autem. Beatae nam sunt fugit
17   // et sit et mollitia sed.
18   // Fuga deserunt tempora facere magni omnis. Omnis quia temporibus laudantium
19   // sit minima sint.

中文参考https://github.com/fzaninotto/Faker/tree/master/src/Faker/Provider/zh_CN

即使这个例子显示了一个属性访问, 每个调用 $faker->name 的调用都产生一个不同的(随机的)结果. 这是因为 Faker 调用了__get() 魔术方法, 并且将 Faker\Generator->$property 调用给 Faker\Generator->format($property).

提示:对于快速生成的假数据,您还可以使用Faker作为命令行工具,这要归功于伪造者-cli。

 1 <?php
 2 for ($i=0; $i < 10; $i++) {
 3   echo $faker->name, "\n";
 4 }
 5   // Adaline Reichel
 6   // Dr. Santa Prosacco DVM
 7   // Noemy Vandervort V
 8   // Lexi O'Conner
 9   // Gracie Weber
10   // Roscoe Johns
11   // Emmett Lebsack
12   // Keegan Thiel
13   // Wellington Koelpin II
14   // Ms. Karley Kiehn V

Formatters 格式化器

每个生成器属性 (例如 nameaddress, and lorem) 都被称谓 "formatters". 一个faker生成器有很多, 打包在“提供者”中。下面是默认区域中绑定的格式化程序的列表。

Faker\Provider\Base 基本

randomDigit             // 7
randomDigitNotNull      // 5
randomNumber($nbDigits = NULL, $strict = false) // 79907610
randomFloat($nbMaxDecimals = NULL, $min = 0, $max = NULL) // 48.8932
numberBetween($min = 1000, $max = 9000) // 8567
randomLetter            // 'b'
// 返回一个给定数组的随机有序序列
randomElements($array = array ('a','b','c'), $count = 1) // array('c')
randomElement($array = array ('a','b','c')) // 'b'
shuffle('hello, world') // 'rlo,h eoldlw'
shuffle(array(1, 2, 3)) // array(2, 1, 3)
numerify('Hello ###') // 'Hello 609'
lexify('Hello ???') // 'Hello wgt'
bothify('Hello ##??') // 'Hello 42jz'
asciify('Hello ***') // 'Hello R6+'
regexify('[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}'); // sm0@y8k96a.ej

Faker\Provider\Lorem 文本

word                                             // 'aut'
words($nb = 3, $asText = false)                  // array('porro', 'sed', 'magni')
sentence($nbWords = 6, $variableNbWords = true)  // 'Sit vitae voluptas sint non voluptates.'
sentences($nb = 3, $asText = false)              // array('Optio quos qui illo error.', 'Laborum vero a officia id corporis.', 'Saepe provident esse hic eligendi.')
paragraph($nbSentences = 3, $variableNbSentences = true) // 'Ut ab voluptas sed a nam. Sint autem inventore aut officia aut aut blanditiis. Ducimus eos odit amet et est ut eum.'
paragraphs($nb = 3, $asText = false)             // array('Quidem ut sunt et quidem est accusamus aut. Fuga est placeat rerum ut. Enim ex eveniet facere sunt.', 'Aut nam et eum architecto fugit repellendus illo. Qui ex esse veritatis.', 'Possimus omnis aut incidunt sunt. Asperiores incidunt iure sequi cum culpa rem. Rerum exercitationem est rem.')
text($maxNbChars = 200)                          // 'Fuga totam reiciendis qui architecto fugiat nemo. Consequatur recusandae qui cupiditate eos quod.'

Faker\Provider\en_US\Person 人物

title($gender = null|'male'|'female')     // 'Ms.'
titleMale                                 // 'Mr.'
titleFemale                               // 'Ms.'
suffix                                    // 'Jr.'
name($gender = null|'male'|'female')      // 'Dr. Zane Stroman'
firstName($gender = null|'male'|'female') // 'Maynard'
firstNameMale                             // 'Maynard'
firstNameFemale                           // 'Rachel'
lastName                                  // 'Zulauf'

Faker\Provider\en_US\Address 地址

cityPrefix                          // 'Lake'
secondaryAddress                    // 'Suite 961'
state                               // 'NewMexico'
stateAbbr                           // 'OH'
citySuffix                          // 'borough'
streetSuffix                        // 'Keys'
buildingNumber                      // '484'
city                                // 'West Judge'
streetName                          // 'Keegan Trail'
streetAddress                       // '439 Karley Loaf Suite 897'
postcode                            // '17916'
address                             // '8888 Cummings Vista Apt. 101, Susanbury, NY 95473'
country                             // 'Falkland Islands (Malvinas)'
latitude($min = -90, $max = 90)     // 77.147489
longitude($min = -180, $max = 180)  // 86.211205

Faker\Provider\en_US\PhoneNumber 电话号码

phoneNumber             // '201-886-0269 x3767'
tollFreePhoneNumber     // '(888) 937-7238'
e164PhoneNumber     // '+27113456789'

Faker\Provider\en_US\Company 公司

catchPhrase             // 'Monitored regional contingency'
bs                      // 'e-enable robust architectures'
company                 // 'Bogan-Treutel'
companySuffix           // 'and Sons'
jobTitle                // 'Cashier'

Faker\Provider\en_US\Text 文本

realText($maxNbChars = 200, $indexSize = 2) // "And yet I wish you could manage it?) 'And what are they made of?' Alice asked in a shrill, passionate voice. 'Would YOU like cats if you were never even spoke to Time!' 'Perhaps not,' Alice replied."

Faker\Provider\DateTime 日期时间

unixTime($max = 'now')                // 58781813
dateTime($max = 'now', $timezone = date_default_timezone_get()) // DateTime('2008-04-25 08:37:17', 'UTC')
dateTimeAD($max = 'now', $timezone = date_default_timezone_get()) // DateTime('1800-04-29 20:38:49', 'Europe/Paris')
iso8601($max = 'now')                 // '1978-12-09T10:10:29+0000'
date($format = 'Y-m-d', $max = 'now') // '1979-06-09'
time($format = 'H:i:s', $max = 'now') // '20:49:42'
dateTimeBetween($startDate = '-30 years', $endDate = 'now', $timezone = date_default_timezone_get()) // DateTime('2003-03-15 02:00:49', 'Africa/Lagos')
dateTimeInInterval($startDate = '-30 years', $interval = '+ 5 days', $timezone = date_default_timezone_get()) // DateTime('2003-03-15 02:00:49', 'Antartica/Vostok')
dateTimeThisCentury($max = 'now', $timezone = date_default_timezone_get())     // DateTime('1915-05-30 19:28:21', 'UTC')
dateTimeThisDecade($max = 'now', $timezone = date_default_timezone_get())      // DateTime('2007-05-29 22:30:48', 'Europe/Paris')
dateTimeThisYear($max = 'now', $timezone = date_default_timezone_get())        // DateTime('2011-02-27 20:52:14', 'Africa/Lagos')
dateTimeThisMonth($max = 'now', $timezone = date_default_timezone_get())       // DateTime('2011-10-23 13:46:23', 'Antarctica/Vostok')
amPm($max = 'now')                    // 'pm'
dayOfMonth($max = 'now')              // '04'
dayOfWeek($max = 'now')               // 'Friday'
month($max = 'now')                   // '06'
monthName($max = 'now')               // 'January'
year($max = 'now')                    // '1993'
century                               // 'VI'
timezone                              // 'Europe/Paris'

Faker\Provider\Internet 互联网

email                   // 'tkshlerin@collins.com'
safeEmail               // 'king.alford@example.org'
freeEmail               // 'bradley72@gmail.com'
companyEmail            // 'russel.durward@mcdermott.org'
freeEmailDomain         // 'yahoo.com'
safeEmailDomain         // 'example.org'
userName                // 'wade55'
password                // 'k&|X+a45*2['
domainName              // 'wolffdeckow.net'
domainWord              // 'feeney'
tld                     // 'biz'
url                     // 'http://www.skilesdonnelly.biz/aut-accusantium-ut-architecto-sit-et.html'
slug                    // 'aut-repellat-commodi-vel-itaque-nihil-id-saepe-nostrum'
ipv4                    // '109.133.32.252'
localIpv4               // '10.242.58.8'
ipv6                    // '8e65:933d:22ee:a232:f1c1:2741:1f10:117c'
macAddress              // '43:85:B7:08:10:CA'

Faker\Provider\UserAgent 用户代理

userAgent              // 'Mozilla/5.0 (Windows CE) AppleWebKit/5350 (KHTML, like Gecko) Chrome/13.0.888.0 Safari/5350'
chrome                 // 'Mozilla/5.0 (Macintosh; PPC Mac OS X 10_6_5) AppleWebKit/5312 (KHTML, like Gecko) Chrome/14.0.894.0 Safari/5312'
firefox                // 'Mozilla/5.0 (X11; Linuxi686; rv:7.0) Gecko/20101231 Firefox/3.6'
safari                 // 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_7_1 rv:3.0; en-US) AppleWebKit/534.11.3 (KHTML, like Gecko) Version/4.0 Safari/534.11.3'
opera                  // 'Opera/8.25 (Windows NT 5.1; en-US) Presto/2.9.188 Version/10.00'
internetExplorer       // 'Mozilla/5.0 (compatible; MSIE 7.0; Windows 98; Win 9x 4.90; Trident/3.0)'

Faker\Provider\Payment 支付

creditCardType          // 'MasterCard'
creditCardNumber        // '4485480221084675'
creditCardExpirationDate // 04/13
creditCardExpirationDateString // '04/13'
creditCardDetails       // array('MasterCard', '4485480221084675', 'Aleksander Nowak', '04/13')
// 生成一个随机的国际银行账号(IBAN). 设置 $countryCode 为空 生成一个随机的国家
iban($countryCode)      // 'IT31A8497112740YZ575DJ28BP4'
swiftBicNumber          // 'RZTIAT22263'

Faker\Provider\Color 颜色

hexcolor               // '#fa3cc2'
rgbcolor               // '0,255,122'
rgbColorAsArray        // array(0,255,122)
rgbCssColor            // 'rgb(0,255,122)'
safeColorName          // 'fuchsia'
colorName              // 'Gainsbor'

Faker\Provider\File 文件

fileExtension          // 'avi'
mimeType               // 'video/x-msvideo'
// 将一个随机文件从源文件复制到目标目录,并返回fullpath或filename
file($sourceDir = '/tmp', $targetDir = '/tmp') // '/path/to/targetDir/13b73edae8443990be1aa8f1a483bc27.jpg'
file($sourceDir, $targetDir, false) // '13b73edae8443990be1aa8f1a483bc27.jpg'

Faker\Provider\Image 图片

// Image generation provided by LoremPixel (http://lorempixel.com/)
imageUrl($width = 640, $height = 480) // 'http://lorempixel.com/640/480/'
imageUrl($width, $height, 'cats')     // 'http://lorempixel.com/800/600/cats/'
imageUrl($width, $height, 'cats', true, 'Faker') // 'http://lorempixel.com/800/400/cats/Faker'
imageUrl($width, $height, 'cats', true, 'Faker', true) // 'http://lorempixel.com/grey/800/400/cats/Faker/' Monochrome image
image($dir = '/tmp', $width = 640, $height = 480) // '/tmp/13b73edae8443990be1aa8f1a483bc27.jpg'
image($dir, $width, $height, 'cats')  // 'tmp/13b73edae8443990be1aa8f1a483bc27.jpg' it's a cat!
image($dir, $width, $height, 'cats', false) // '13b73edae8443990be1aa8f1a483bc27.jpg' it's a filename without path
image($dir, $width, $height, 'cats', true, false) // it's a no randomize images (default: `true`)
image($dir, $width, $height, 'cats', true, true, 'Faker') // 'tmp/13b73edae8443990be1aa8f1a483bc27.jpg' it's a cat with 'Faker' text. Default, `null`.

Faker\Provider\Uuid UUID

uuid                   // '7e57d004-2b97-0e7a-b45f-5387367791cd'

Faker\Provider\Barcode 条形码

ean13          // '4006381333931'
ean8           // '73513537'
isbn13         // '9790404436093'
isbn10         // '4881416324'

Faker\Provider\Miscellaneous 各种各样的

boolean // false
boolean($chanceOfGettingTrue = 50) // true
md5           // 'de99a620c50f2990e87144735cd357e7'
sha1          // 'f08e7f04ca1a413807ebc47551a40a20a0b4de5c'
sha256        // '0061e4c60dac5c1d82db0135a42e00c89ae3a333e7c26485321f24348c7e98a5'
locale        // en_UK
countryCode   // UK
languageCode  // en
currencyCode  // EUR
emoji         // 😁

Faker\Provider\Biased 偏向的

// 在10到20之间得到一个随机数,
// 有更多的几率接近20
biasedNumberBetween($min = 10, $max = 20, $function = 'sqrt')

Faker\Provider\HtmlLorem html文本

//生成一个不超过2层的HTML文档,在任何级别上都不超过3个元素。
randomHtml(2,3)   // <html><head><title>Aut illo dolorem et accusantium eum.</title></head><body><form action="example.com" method="POST"><label for="username">sequi</label><input type="text" id="username"><label for="password">et</label><input type="password" id="password"></form><b>Id aut saepe non mollitia voluptas voluptas.</b><table><thead><tr><tr>Non consequatur.</tr><tr>Incidunt est.</tr><tr>Aut voluptatem.</tr><tr>Officia voluptas rerum quo.</tr><tr>Asperiores similique.</tr></tr></thead><tbody><tr><td>Sapiente dolorum dolorem sint laboriosam commodi qui.</td><td>Commodi nihil nesciunt eveniet quo repudiandae.</td><td>Voluptates explicabo numquam distinctio necessitatibus repellat.</td><td>Provident ut doloremque nam eum modi aspernatur.</td><td>Iusto inventore.</td></tr><tr><td>Animi nihil ratione id mollitia libero ipsa quia tempore.</td><td>Velit est officia et aut tenetur dolorem sed mollitia expedita.</td><td>Modi modi repudiandae pariatur voluptas rerum ea incidunt non molestiae eligendi eos deleniti.</td><td>Exercitationem voluptatibus dolor est iste quod molestiae.</td><td>Quia reiciendis.</td></tr><tr><td>Inventore impedit exercitationem voluptatibus rerum cupiditate.</td><td>Qui.</td><td>Aliquam.</td><td>Autem nihil aut et.</td><td>Dolor ut quia error.</td></tr><tr><td>Enim facilis iusto earum et minus rerum assumenda quis quia.</td><td>Reprehenderit ut sapiente occaecati voluptatum dolor voluptatem vitae qui velit.</td><td>Quod fugiat non.</td><td>Sunt nobis totam mollitia sed nesciunt est deleniti cumque.</td><td>Repudiandae quo.</td></tr><tr><td>Modi dicta libero quisquam doloremque qui autem.</td><td>Voluptatem aliquid saepe laudantium facere eos sunt dolor.</td><td>Est eos quis laboriosam officia expedita repellendus quia natus.</td><td>Et neque delectus quod fugit enim repudiandae qui.</td><td>Fugit soluta sit facilis facere repellat culpa magni voluptatem maiores tempora.</td></tr><tr><td>Enim dolores doloremque.</td><td>Assumenda voluptatem eum perferendis exercitationem.</td><td>Quasi in fugit deserunt ea perferendis sunt nemo consequatur dolorum soluta.</td><td>Maxime repellat qui numquam voluptatem est modi.</td><td>Alias rerum rerum hic hic eveniet.</td></tr><tr><td>Tempore voluptatem.</td><td>Eaque.</td><td>Et sit quas fugit iusto.</td><td>Nemo nihil rerum dignissimos et esse.</td><td>Repudiandae ipsum numquam.</td></tr><tr><td>Nemo sunt quia.</td><td>Sint tempore est neque ducimus harum sed.</td><td>Dicta placeat atque libero nihil.</td><td>Et qui aperiam temporibus facilis eum.</td><td>Ut dolores qui enim et maiores nesciunt.</td></tr><tr><td>Dolorum totam sint debitis saepe laborum.</td><td>Quidem corrupti ea.</td><td>Cum voluptas quod.</td><td>Possimus consequatur quasi dolorem ut et.</td><td>Et velit non hic labore repudiandae quis.</td></tr></tbody></table></body></html>

Modifiers 修改器

Faker提供三个特殊的提供者 providers, unique()optional(), valid(), 在任何提供者之前调用。.

// unique() 强制 providers 返回一个唯一的值
$values = array();
for ($i=0; $i < 10; $i++) {
  // 得到一个随机数字,但总是一个新的,以避免重复
  $values []= $faker->unique()->randomDigit;
}
print_r($values); // [4, 1, 8, 5, 0, 2, 6, 9, 7, 3]

// 只有有限范围的提供者才会抛出一个异常,当没有新的惟一值时
$values = array();
try {
  for ($i=0; $i < 10; $i++) {
    $values []= $faker->unique()->randomDigitNotNull;
  }
} catch (\OverflowException $e) {
  echo "There are only 9 unique digits not null, Faker can't generate 10 of them!";
}

// 您可以通过传递true作为第一个参数来重置所有提供者的惟一修饰符
$faker->unique($reset = true)->randomDigitNotNull; // 不会抛出 OverflowException 异常 因为 unique() 被重置
// 提示: unique() 每个提供者都保留一个值数组

// optional() 有时绕过提供者返回一个默认值(默认值为NULL)
$values = array();
for ($i=0; $i < 10; $i++) {
  // 得到一个随机数字,但有时也为空
  $values []= $faker->optional()->randomDigit;
}
print_r($values); // [1, 4, null, 9, 5, null, null, 4, 6, null]

// optional() 接受一个权重参数来指定接收默认值的概率。
// 0 总是返回默认值;1将始终返回提供者。默认的权重是0.5(50%的几率)。
$faker->optional($weight = 0.1)->randomDigit; // 90% chance of NULL
$faker->optional($weight = 0.9)->randomDigit; // 10% chance of NULL

// optional() 接受默认参数,以指定要返回的默认值。
// 默认为空。
$faker->optional($weight = 0.5, $default = false)->randomDigit; // 50% chance of FALSE
$faker->optional($weight = 0.9, $default = 'abc')->word; // 10% chance of 'abc'

// valid() 只根据传递的验证器函数接受有效值
$values = array();
$evenValidator = function($digit) {
    return $digit % 2 === 0;
};
for ($i=0; $i < 10; $i++) {
    $values []= $faker->valid($evenValidator)->randomDigit;
}
print_r($values); // [0, 4, 8, 4, 2, 6, 0, 8, 8, 6]

// 就像 unique(), valid() 当它不能产生有效值时抛出一个溢出异常
$values = array();
try {
  $faker->valid($evenValidator)->randomElement(1, 3, 5, 7, 9);
} catch (\OverflowException $e) {
  echo "Can't pick an even number in that set!";
}

Localization 地方化

Faker\Factory 可以将语言环境作为参数,返回本地化的数据. 如果没有找到本地化的提供者, 那么 factory 就会回到默认的语言环境 (en_US).

<?php
$faker = Faker\Factory::create('fr_FR'); // create a French faker
for ($i=0; $i < 10; $i++) {
  echo $faker->name, "\n";
}
  // Luce du Coulon
  // Auguste Dupont
  // Roger Le Voisin
  // Alexandre Lacroix
  // Jacques Humbert-Roy
  // Thérèse Guillet-Andre
  // Gilles Gros-Bodin
  // Amélie Pires
  // Marcel Laporte
  // Geneviève Marchal

您可以在源代码中检查可用的 Faker 区域, 提供者目录下 . Faker的本地化是一个持续的过程, 我们需要你的帮助. 不要犹豫,创建本地化的提供商到您自己的语言环境,并提交一个PR!

Populating Entities Using an ORM or an ODM 使用ORM或ODM填充实体

Faker 为对象-关系和对象文档映射器提供适配器 (currently, PropelDoctrine2CakePHPSpot2Mandango and Eloquent are supported). 这些适配器通过ORM库提供的实体类(或使用ODM库提供的文档类的文档存储库)来简化数据库的数量。To populate entities, create a 新的populator类(使用生成器实例作为参数), 然后列出必须生成的所有实体的类和数量。要启动实际的数据填充,请调用 execute() 方法。

下面是一个示例,展示如何填充5个 Author 和10个 Book 对象:

<?php
$generator = \Faker\Factory::create();
$populator = new Faker\ORM\Propel\Populator($generator);
$populator->addEntity('Author', 5);
$populator->addEntity('Book', 10);
$insertedPKs = $populator->execute();

填充器使用名称和列类型猜测器来填充每个列,并使用相关的数据。 例如,Faker用第一个名字格式化器来填充一个名为 first name 的列,以及一个使用 dateTime 格式器的时间戳类型的列。

由此产生的实体是一致的。如果Faker错误地解释了一个列名,您仍然可以指定一个定制的闭包来填充一个特定的列,使用第三个参数对addEntity():

<?php
$populator->addEntity('Book', 5, array(
  'ISBN' => function() use ($generator) { return $generator->ean13(); }
));

在本例中,Faker 将猜测除 ISBN 之外的所有列的格式化程序,其中使用了给定的匿名函数。

提示:忽略某些列,在addEntity()的第三个参数中为列名指定null。这通常对于一个行为添加的列来说是必要的:

<?php
$populator->addEntity('Book', 5, array(
  'CreatedAt' => null,
  'UpdatedAt' => null,
));

当然,Faker并没有填充自动递增的主键。此外, Faker\ORM\Propel\Populator::execute()返回被按类索引插入的主键的列表:

<?php
print_r($insertedPKs);
// array(
//   'Author' => (34, 35, 36, 37, 38),
//   'Book'   => (456, 457, 458, 459, 470, 471, 472, 473, 474, 475)
// )

在前面的例子中,BookAuthor模型共享一段关系。由于作者实体是首先填充的,所以Faker足够聪明,可以将填充的图书实体与一个填充的作者实体关联起来。

<?php
$populator->addEntity('Book', 5, array(), array(
  function($book) { $book->publish(); },
));

Seeding the Generator 数据生成器

您可能希望得到相同的生成的数据,例如,在使用Faker进行单元测试时。生成器提供一个 seed() 方法, 该方法为随机数生成器提供种子。同一个脚本两次调用相同的脚本会产生相同的结果。

<?php
$faker = Faker\Factory::create();
$faker->seed(1234);

echo $faker->name; // 'Jess Mraz I';

提示:DateTime格式器不会复制相同的假数据,如果您不修复$max的值:

<?php
// 即使在生成数据时,这条线也会返回不同的结果,因为$max会改变
$faker->dateTime(); // 相当于 $faker->dateTime($max = 'now')
// 确保你修改了$max参数
$faker->dateTime('2014-02-25 08:37:17'); // 当数据被生成时,将会返回相同的日期

提示:如果使用rand()php函数,格式化程序不会复制相同的假数据。使用$fakermt_rand()代替:

<?php
// bad
$faker->realText(rand(10,20));
// good
$faker->realText($faker->numberBetween(10,20));

Faker Internals: Understanding Providers Faker内部:了解提供者

一个 Faker\Generator 独自不可以做太多工作. 它需要 Faker\Provider 对象将数据生成委托给它们. Faker\Factory::create() 实际上创建了一个与默认提供程序捆绑在一起的Faker\Generato就是下面这种情况:

<?php
$faker = new Faker\Generator();
$faker->addProvider(new Faker\Provider\en_US\Person($faker));
$faker->addProvider(new Faker\Provider\en_US\Address($faker));
$faker->addProvider(new Faker\Provider\en_US\PhoneNumber($faker));
$faker->addProvider(new Faker\Provider\en_US\Company($faker));
$faker->addProvider(new Faker\Provider\Lorem($faker));
$faker->addProvider(new Faker\Provider\Internet($faker));

当您尝试访问$faker对象上的一个属性时,生成器会查找与它相连的所有提供程序中相同名称的方法。 例如, 调用$faker->name 触发了调用 Faker\Provider\Person::name(). 由于Faker从最后一个提供程序开始,您可以轻松地覆盖现有的格式化程序:只需添加一个包含您想要覆盖的格式化器的方法的提供者。

这意味着您可以轻松地将自己的提供者添加到一个 Faker\Generator 实例中。提供者通常是扩展 \Faker\Provider\Base 的类. 这个父类允许您使用类似的方法 lexify() 或 randomNumber(); 通过受保护的 $generator 属性,它还允许您访问其他提供者的格式化程序。新的格式化程序是提供程序类的公共方法。

下面是填充图书数据的示例提供者:

<?php

namespace Faker\Provider;

class Book extends \Faker\Provider\Base
{
  public function title($nbWords = 5)
  {
    $sentence = $this->generator->sentence($nbWords);
    return substr($sentence, 0, strlen($sentence) - 1);
  }

  public function ISBN()
  {
    return $this->generator->ean13();
  }
}

要注册这个提供者,只需向现有的生成器添加一个新的\Faker\Provider\Book 实例:

<?php
$faker->addProvider(new \Faker\Provider\Book($faker));

现在您可以使用这两个新的格式器,就像任何其他的Faker格式化程序一样:

<?php
$book = new Book();
$book->setTitle($faker->title);
$book->setISBN($faker->ISBN);
$book->setSummary($faker->text);
$book->setPrice($faker->randomNumber(2));

提示:提供程序也可以是一个普通的PHP对象。在这种情况下,提供者的所有公共方法都可用于生成器。

Real Life Usage 现实生活中使用

下面的脚本生成一个有效的XML文档:

<?php
require_once '/path/to/Faker/src/autoload.php';
$faker = Faker\Factory::create();
?>
<?xml version="1.0" encoding="UTF-8"?>
<contacts>
<?php for ($i=0; $i < 10; $i++): ?>
  <contact firstName="<?php echo $faker->firstName ?>" lastName="<?php echo $faker->lastName ?>" email="<?php echo $faker->email ?>">
    <phone number="<?php echo $faker->phoneNumber ?>"/>
<?php if ($faker->boolean(25)): ?>
    <birth date="<?php echo $faker->dateTimeThisCentury->format('Y-m-d') ?>" place="<?php echo $faker->city ?>"/>
<?php endif; ?>
    <address>
      <street><?php echo $faker->streetAddress ?></street>
      <city><?php echo $faker->city ?></city>
      <postcode><?php echo $faker->postcode ?></postcode>
      <state><?php echo $faker->state ?></state>
    </address>
    <company name="<?php echo $faker->company ?>" catchPhrase="<?php echo $faker->catchPhrase ?>">
<?php if ($faker->boolean(33)): ?>
      <offer><?php echo $faker->bs ?></offer>
<?php endif; ?>
<?php if ($faker->boolean(33)): ?>
      <director name="<?php echo $faker->name ?>" />
<?php endif; ?>
    </company>
<?php if ($faker->boolean(15)): ?>
    <details>
<![CDATA[
<?php echo $faker->text(400) ?>
]]>
    </details>
<?php endif; ?>
  </contact>
<?php endfor; ?>
</contacts>

运行这个脚本会生成一个看起来像这样的文档:

<?xml version="1.0" encoding="UTF-8"?>
<contacts>
  <contact firstName="Ona" lastName="Bednar" email="schamberger.frank@wuckert.com">
    <phone number="1-265-479-1196x714"/>
    <address>
      <street>182 Harrison Cove</street>
      <city>North Lloyd</city>
      <postcode>45577</postcode>
      <state>Alabama</state>
    </address>
    <company name="Veum, Funk and Shanahan" catchPhrase="Function-based stable solution">
      <offer>orchestrate compelling web-readiness</offer>
    </company>
    <details>
<![CDATA[
Alias accusantium voluptatum autem nobis cumque neque modi. Voluptatem error molestiae consequatur alias.
Illum commodi molestiae aut repellat id. Et sit consequuntur aut et ullam asperiores. Cupiditate culpa voluptatem et mollitia dolor. Nisi praesentium qui ut.
]]>
    </details>
  </contact>
  <contact firstName="Aurelie" lastName="Paucek" email="alfonzo55@durgan.com">
    <phone number="863.712.1363x9425"/>
    <address>
      <street>90111 Hegmann Inlet</street>
      <city>South Geovanymouth</city>
      <postcode>69961-9311</postcode>
      <state>Colorado</state>
    </address>
    <company name="Krajcik-Grimes" catchPhrase="Switchable cohesive instructionset">
    </company>
  </contact>
  <contact firstName="Clifton" lastName="Kshlerin" email="kianna.wiegand@framiwyman.info">
    <phone number="692-194-4746"/>
    <address>
      <street>9791 Nona Corner</street>
      <city>Harberhaven</city>
      <postcode>74062-8191</postcode>
      <state>RhodeIsland</state>
    </address>
    <company name="Rosenbaum-Aufderhar" catchPhrase="Realigned asynchronous encryption">
    </company>
  </contact>
  <contact firstName="Alexandre" lastName="Orn" email="thelma37@erdmancorwin.biz">
    <phone number="189.655.8677x027"/>
    <address>
      <street>11161 Schultz Via</street>
      <city>Feilstad</city>
      <postcode>98019</postcode>
      <state>NewJersey</state>
    </address>
    <company name="O'Hara-Prosacco" catchPhrase="Re-engineered solution-oriented algorithm">
      <director name="Dr. Berenice Auer V" />
    </company>
    <details>
<![CDATA[
Ut itaque et quaerat doloremque eum praesentium. Rerum in saepe dolorem. Explicabo qui consequuntur commodi minima rem.
Harum temporibus rerum dolores. Non molestiae id dolorem placeat.
Aut asperiores nihil eius repellendus. Vero nihil corporis voluptatem explicabo commodi. Occaecati omnis blanditiis beatae quod aspernatur eos.
]]>
    </details>
  </contact>
  <contact firstName="Katelynn" lastName="Kohler" email="reinger.trudie@stiedemannjakubowski.com">
    <phone number="(665)713-1657"/>
    <address>
      <street>6106 Nader Village Suite 753</street>
      <city>McLaughlinstad</city>
      <postcode>43189-8621</postcode>
      <state>Missouri</state>
    </address>
    <company name="Herman-Tremblay" catchPhrase="Object-based explicit service-desk">
      <offer>expedite viral synergies</offer>
      <director name="Arden Deckow" />
    </company>
  </contact>
  <contact firstName="Blanca" lastName="Stark" email="tad27@feest.net">
    <phone number="168.719.4692x87177"/>
    <address>
      <street>7546 Kuvalis Plaza</street>
      <city>South Wilfrid</city>
      <postcode>77069</postcode>
      <state>Georgia</state>
    </address>
    <company name="Upton, Braun and Rowe" catchPhrase="Visionary leadingedge pricingstructure">
    </company>
  </contact>
  <contact firstName="Rene" lastName="Spencer" email="anibal28@armstrong.info">
    <phone number="715.222.0095x175"/>
    <birth date="2008-08-07" place="Zulaufborough"/>
    <address>
      <street>478 Daisha Landing Apt. 510</street>
      <city>West Lizethhaven</city>
      <postcode>30566-5362</postcode>
      <state>WestVirginia</state>
    </address>
    <company name="Wiza Inc" catchPhrase="Persevering reciprocal approach">
      <offer>orchestrate dynamic networks</offer>
      <director name="Erwin Nienow" />
    </company>
    <details>
<![CDATA[
Dolorem consequatur voluptates unde optio unde. Accusantium dolorem est est architecto impedit. Corrupti et provident quo.
Reprehenderit dolores aut quidem suscipit repudiandae corporis error. Molestiae enim aperiam illo.
Et similique qui non expedita quia dolorum. Ex rem incidunt ea accusantium temporibus minus non.
]]>
    </details>
  </contact>
  <contact firstName="Alessandro" lastName="Hagenes" email="tbreitenberg@oharagorczany.com">
    <phone number="1-284-958-6768"/>
    <address>
      <street>1251 Koelpin Mission</street>
      <city>North Revastad</city>
      <postcode>81620</postcode>
      <state>Maryland</state>
    </address>
    <company name="Stiedemann-Bruen" catchPhrase="Re-engineered 24/7 success">
    </company>
  </contact>
  <contact firstName="Novella" lastName="Rutherford" email="claud65@bogisich.biz">
    <phone number="(091)825-7971"/>
    <address>
      <street>6396 Langworth Hills Apt. 446</street>
      <city>New Carlos</city>
      <postcode>89399-0268</postcode>
      <state>Wyoming</state>
    </address>
    <company name="Stroman-Legros" catchPhrase="Expanded 4thgeneration moratorium">
      <director name="Earlene Bayer" />
    </company>
  </contact>
  <contact firstName="Andreane" lastName="Mann" email="meggie17@ornbaumbach.com">
    <phone number="941-659-9982x5689"/>
    <birth date="1934-02-21" place="Stantonborough"/>
    <address>
      <street>2246 Kreiger Station Apt. 291</street>
      <city>Kaydenmouth</city>
      <postcode>11397-1072</postcode>
      <state>Wyoming</state>
    </address>
    <company name="Lebsack, Bernhard and Kiehn" catchPhrase="Persevering actuating framework">
      <offer>grow sticky portals</offer>
    </company>
    <details>
<![CDATA[
Quia dolor ut quia error libero. Enim facilis iusto earum et minus rerum assumenda. Quia doloribus et reprehenderit ut. Occaecati voluptatum dolor voluptatem vitae qui velit quia.
Fugiat non in itaque sunt nobis totam. Sed nesciunt est deleniti cumque alias. Repudiandae quo aut numquam modi dicta libero.
]]>
    </details>
  </contact>
</contacts>

Language specific formatters 特定于语言的格式器

Faker\Provider\ar_SA\Person

<?php

echo $faker->idNumber;      // 身份证号
echo $faker->nationalIdNumber // 公民身份证号
echo $faker->foreignerIdNumber // 外国人省份证号
echo $faker->companyIdNumber // 公司身份证号

Faker\Provider\ar_SA\Payment

<?php

echo $faker->bankAccountNumber // "SA0218IBYZVZJSEC8536V4XC"

Faker\Provider\at_AT\Payment

<?php

echo $faker->vat;           // "AT U12345678" - 奥地利增值税
echo $faker->vat(false);    // "ATU12345678" - 无间隔奥地利值加税号

Faker\Provider\bg_BG\Payment

<?php

echo $faker->vat;           // "BG 0123456789" - 保加利亚增值税率
echo $faker->vat(false);    // "BG0123456789" - 无间隔的保加利亚增值税号

Faker\Provider\cs_CZ\Address

<?php

echo $faker->region; // "Liberecký kraj"

Faker\Provider\cs_CZ\Company

<?php

// Generates a valid IČO
echo $faker->ico; // "69663963"

Faker\Provider\cs_CZ\DateTime

<?php

echo $faker->monthNameGenitive; // "prosince"
echo $faker->formattedDate; // "12. listopadu 2015"

Faker\Provider\cs_CZ\Person

<?php

echo $faker->birthNumber; // "7304243452"

Faker\Provider\da_DK\Person

<?php

// 生成一个随机的CPR值
echo $faker->cpr; // "051280-2387"

Faker\Provider\da_DK\Address

<?php

// 生成一个随机的“市”名称
echo $faker->kommune; // "Frederiksberg"

// 生成一个随机的区域名称
echo $faker->region; // "Region Sjælland"

Faker\Provider\da_DK\Company

<?php

// 生成一个随机的CVR数字
echo $faker->cvr; // "32458723"

// 生成一个随机的P值
echo $faker->p; // "5398237590"

Faker\Provider\de_DE\Payment

<?php

echo $faker->bankAccountNumber; // "DE41849025553661169313"
echo $faker->bank; // "Volksbank Stuttgart"

Faker\Provider\en_HK\Address

<?php

// 根据香港常见的词汇,生成一个虚假的城镇名称。
echo $faker->town; // "Yuen Long"

// 根据香港常见的单词生成一个假村名。
echo $faker->village; // "O Tau"

// 根据香港常见的词汇,生成一个虚假的地产名称。
echo $faker->estate; // "Ching Lai Court"

Faker\Provider\en_HK\Phone

<?php

// 生成一个香港移动电话号码(从5、6或9开始)
echo $faker->mobileNumber; // "92150087"

// 生成一个香港固定电话号码(从2或3开始)
echo $faker->landlineNumber; // "32750132"

// 生成一个香港传真号码(从7开始)
echo $faker->faxNumber; // "71937729"

Faker\Provider\en_NG\Address

<?php

// 生成一个随机的区域名称
echo $faker->region; // 'Katsina'

Faker\Provider\en_NG\Person

<?php

// 生成一个随机的人名
echo $faker->name; // 'Oluwunmi Mayowa'

Faker\Provider\en_NZ\Phone

<?php

// 生成一个单元(移动)电话号码
echo $faker->cellNumber; // "021 123 4567"

// 产生免费电话号码
echo $faker->tollFreeNumber; // "0800 123 456"

// 电话地区号
echo $faker->areaCode; // "03"

Faker\Provider\en_US\Payment

<?php

echo $faker->bankAccountNumber;  // '51915734310'
echo $faker->bankRoutingNumber;  // '212240302'

Faker\Provider\en_US\Person

<?php

// 生成一个随机的社会安全号码
echo $faker->ssn; // '123-45-6789'

Faker\Provider\en_ZA\Company

<?php

// 生成一个随机的公司注册号
echo $faker->companyNumber; // 1999/789634/01

Faker\Provider\en_ZA\Person

<?php

// 生成一个随机的国家识别号码
echo $faker->idNumber; // 6606192211041

// 生成一个随机有效的许可码
echo $faker->licenceCode; // EB

Faker\Provider\en_ZA\PhoneNumber

<?php

// 生成一个特殊的免费电话号码
echo $faker->tollFreeNumber; // 0800 555 5555

// 生成一个电话号码
echo $faker->mobileNumber; // 082 123 5555

Faker\Provider\es_ES\Person

<?php

// 生成一个文档的文档(DNI)
echo $faker->dni; // '77446565E'

Faker\Provider\es_ES\Payment

<?php
// 生成一个财政(CIF)数字
echo $faker->vat;           // "A35864370"

Faker\Provider\es_PE\Person

<?php

// 生成一个秘鲁文档(DNI)数字
echo $faker->dni; // '83367512'

Faker\Provider\fa_IR\Address

<?php

// 生成一个随机的构建名称
echo $faker->building; // "ساختمان آفتاب"

// 返回一个随机的城市名称
echo $faker->city // "استان زنجان"

Faker\Provider\fa_IR\Company

<?php

// 生成一个随机的契约类型
echo $faker->contract; // "رسمی"

Faker\Provider\fi_FI\Payment

<?php

// 生成一个随机的银行帐号
echo $faker->bankAccountNumber; // "FI8350799879879616"

Faker\Provider\fi_FI\Person

<?php

//产生一个有效的芬兰个人身份号码(在芬兰语中,亨利克隧道)
echo $faker->personalIdentityNumber() // '170974-007J'

//因为男性和女性的数字是不同的,所以你可以选择性别。
echo $faker->personalIdentityNumber(\DateTime::createFromFormat('Y-m-d', '2015-12-14'), 'female') // '141215A520B'

Faker\Provider\fr_BE\Payment

<?php

echo $faker->vat;           // "BE 0123456789" - 比利时增值税
echo $faker->vat(false);    // "BE0123456789" - 无间隔的比利时值加税号

Faker\Provider\es_VE\Person

<?php

// 生成一个 Cédula de 标识号,您可以通过一个参数来添加分隔符
echo $faker->nationalId; // 'V11223344'

Faker\Provider\es_VE\Company

<?php

// 生成一个r.i.f number,你可以通过一个参数来添加分隔符
echo $faker->taxpayerIdentificationNumber; // 'J1234567891'

Faker\Provider\fr_FR\Address

<?php

// 生成一个随机的部门名称
echo $faker->departmentName; // "Haut-Rhin"

// 生成一个随机的部门号
echo $faker->departmentNumber; // "2B"

// 生成一个随机的部门信息(部门号=部门名称)
$faker->department; // array('18' => 'Cher');

// 生成一个随机的地区
echo $faker->region; // "Saint-Pierre-et-Miquelon"

Faker\Provider\fr_FR\Company

<?php

// 产生一个随机的警号
echo $faker->siren; // 082 250 104

// 生成一个随机的SIRET数
echo $faker->siret; // 347 355 708 00224

Faker\Provider\fr_FR\Payment

<?php

// 生成一个随机的增值税
echo $faker->vat; // FR 12 123 456 789

Faker\Provider\fr_FR\Person

<?php

// 生成一个随机的 NIR / Sécurité 社会数字
echo $faker->nir; // 1 88 07 35 127 571 - 19

Faker\Provider\he_IL\Payment

<?php

echo $faker->bankAccountNumber // "IL392237392219429527697"

Faker\Provider\hr_HR\Payment

<?php

echo $faker->bankAccountNumber // "HR3789114847226078672"

Faker\Provider\hu_HU\Payment

<?php

// 生成一个随机的银行帐号
echo $faker->bankAccountNumber; // "HU09904437680048220079300783"

Faker\Provider\id_ID\Person

<?php

// 产生一个随机的 Nomor Induk Kependudukan (NIK)

// 第一个参数是性别, 不管 Person::GENDER_MALE or Person::GENDER_FEMALE, 如果没有指定的随机性别
// 第二个参数是出生日期(DateTime对象),如果没有指定,则使用随机出生日期
echo $faker->nik(); // "8522246001570940"

Faker\Provider\it_IT\Company

<?php

// 生成一个随机的增值税Id
echo $faker->vatId(); // "IT98746784967"

Faker\Provider\it_IT\Person

<?php

// 生成一个随机的税务Id码(编码fiscale)
echo $faker->taxId(); // "DIXDPZ44E08F367A"

Faker\Provider\ja_JP\Person

<?php

// Generates a 'kana' name
echo $faker->kanaName($gender = null|'male'|'female') // "アオタ ミノル"

// Generates a 'kana' first name
echo $faker->firstKanaName($gender = null|'male'|'female') // "ヒデキ"

// Generates a 'kana' first name on the male
echo $faker->firstKanaNameMale // "ヒデキ"

// Generates a 'kana' first name on the female
echo $faker->firstKanaNameFemale // "マアヤ"

// Generates a 'kana' last name
echo $faker->lastKanaName; // "ナカジマ"

Faker\Provider\ka_GE\Payment

<?php

// Generates a random bank account number
echo $faker->bankAccountNumber; // "GE33ZV9773853617253389"

Faker\Provider\kk_KZ\Company

<?php

// Generates an business identification number
echo $faker->businessIdentificationNumber; // "150140000019"

Faker\Provider\kk_KZ\Payment

<?php

// Generates a random bank name
echo $faker->bank; // "Қазкоммерцбанк"

// Generates a random bank account number
echo $faker->bankAccountNumber; // "KZ1076321LO4H6X41I37"

Faker\Provider\kk_KZ\Person

<?php

// Generates an individual identification number
echo $faker->individualIdentificationNumber; // "780322300455"

// Generates an individual identification number based on his/her birth date
echo $faker->individualIdentificationNumber(new \DateTime('1999-03-01')); // "990301300455"

Faker\Provider\ko_KR\Address

<?php

// Generates a metropolitan city
echo $faker->metropolitanCity; // "서울특별시"

// Generates a borough
echo $faker->borough; // "강남구"

Faker\Provider\lt_LT\Payment

<?php

echo $faker->bankAccountNumber // "LT300848876740317118"

Faker\Provider\lv_LV\Person

<?php

// Generates a random personal identity card number
echo $faker->personalIdentityNumber; // "140190-12301"

Faker\Provider\ne_NP\Address

<?php

//Generates a Nepali district name
echo $faker->district;

//Generates a Nepali city name
echo $faker->cityName;

Faker\Provider\nl_BE\Payment

<?php

echo $faker->vat;           // "BE 0123456789" - Belgian Value Added Tax number
echo $faker->vat(false);    // "BE0123456789" - unspaced Belgian Value Added Tax number

Faker\Provider\nl_NL\Company

<?php

echo $faker->vat; // "NL123456789B01" - Dutch Value Added Tax number
echo $faker->btw; // "NL123456789B01" - Dutch Value Added Tax number (alias)

Faker\Provider\nl_NL\Person

<?php

echo $faker->idNumber; // "111222333" - Dutch Personal identification number (BSN)

Faker\Provider\nb_NO\Payment

<?php

// Generates a random bank account number
echo $faker->bankAccountNumber; // "NO3246764709816"

Faker\Provider\pl_PL\Person

<?php

// Generates a random PESEL number
echo $faker->pesel; // "40061451555"
// Generates a random personal identity card number
echo $faker->personalIdentityNumber; // "AKX383360"
// Generates a random taxpayer identification number (NIP)
echo $faker->taxpayerIdentificationNumber; // '8211575109'

Faker\Provider\pl_PL\Company

<?php

// Generates a random REGON number
echo $faker->regon; // "714676680"
// Generates a random local REGON number
echo $faker->regonLocal; // "15346111382836"

Faker\Provider\pl_PL\Payment

<?php

// Generates a random bank name
echo $faker->bank; // "Narodowy Bank Polski"
// Generates a random bank account number
echo $faker->bankAccountNumber; // "PL14968907563953822118075816"

Faker\Provider\pt_PT\Person

<?php

// Generates a random taxpayer identification number (in portuguese - Número de Identificação Fiscal NIF)
echo $faker->taxpayerIdentificationNumber; // '165249277'

Faker\Provider\pt_BR\Address

<?php

// Generates a random region name
echo $faker->region; // 'Nordeste'

// Generates a random region abbreviation
echo $faker->regionAbbr; // 'NE'

Faker\Provider\pt_BR\PhoneNumber

<?php

echo $faker->areaCode;  // 21
echo $faker->cellphone; // 9432-5656
echo $faker->landline;  // 2654-3445
echo $faker->phone;     // random landline, 8-digit or 9-digit cellphone number

// Using the phone functions with a false argument returns unformatted numbers
echo $faker->cellphone(false); // 74336667

// cellphone() has a special second argument to add the 9th digit. Ignored if generated a Radio number
echo $faker->cellphone(true, true); // 98983-3945 or 7343-1290

// Using the "Number" suffix adds area code to the phone
echo $faker->cellphoneNumber;       // (11) 98309-2935
echo $faker->landlineNumber(false); // 3522835934
echo $faker->phoneNumber;           // formatted, random landline or cellphone (obeying the 9th digit rule)
echo $faker->phoneNumberCleared;    // not formatted, random landline or cellphone (obeying the 9th digit rule)

Faker\Provider\pt_BR\Person

<?php

// The name generator may include double first or double last names, plus title and suffix
echo $faker->name; // 'Sr. Luis Adriano Sepúlveda Filho'

// Valid document generators have a boolean argument to remove formatting
echo $faker->cpf;        // '145.343.345-76'
echo $faker->cpf(false); // '45623467866'
echo $faker->rg;         // '84.405.736-3'

Faker\Provider\pt_BR\Company

<?php

// Generates a Brazilian formatted and valid CNPJ
echo $faker->cnpj;        // '23.663.478/0001-24'
echo $faker->cnpj(false); // '23663478000124'

Faker\Provider\ro_MD\Payment

<?php

// Generates a random bank account number
echo $faker->bankAccountNumber; // "MD83BQW1CKMUW34HBESDP3A8"

Faker\Provider\ro_RO\Payment

<?php

// Generates a random bank account number
echo $faker->bankAccountNumber; // "RO55WRJE3OE8X3YQI7J26U1E"

Faker\Provider\ro_RO\Person

<?php

// Generates a random male name prefix/title
echo $faker->prefixMale; // "ing."
// Generates a random female name prefix/title
echo $faker->prefixFemale; // "d-na."
// Generates a random male first name
echo $faker->firstNameMale; // "Adrian"
// Generates a random female first name
echo $faker->firstNameFemale; // "Miruna"


// Generates a random Personal Numerical Code (CNP)
echo $faker->cnp; // "2800523081231"
// Valid option values:
//    $gender: null (random), male, female
//    $dateOfBirth (1800+): null (random), Y-m-d, Y-m (random day), Y (random month and day)
//          i.e. '1981-06-16', '2015-03', '1900'
//    $county: 2 letter ISO 3166-2:RO county codes and B1, B2, B3, B4, B5, B6 for Bucharest's 6 sectors
//    $isResident true/false flag if the person resides in Romania
echo $faker->cnp($gender = null, $dateOfBirth = null, $county = null, $isResident = true);

Faker\Provider\ro_RO\PhoneNumber

<?php

// Generates a random toll-free phone number
echo $faker->tollFreePhoneNumber; // "0800123456"
// Generates a random premium-rate phone number
echo $faker->premiumRatePhoneNumber; // "0900123456"

Faker\Provider\ru_RU\Payment

<?php

// Generates a Russian bank name (based on list of real russian banks)
echo $faker->bank; // "ОТП Банк"

//Generate a Russian Tax Payment Number for Company
echo $faker->inn; //  7813540735

//Generate a Russian Tax Code for Company
echo $faker->kpp; // 781301001

Faker\Provider\sv_SE\Payment

<?php

// Generates a random bank account number
echo $faker->bankAccountNumber; // "SE5018548608468284909192"

Faker\Provider\sv_SE\Person

<?php

//Generates a valid Swedish personal identity number (in Swedish - Personnummer)
echo $faker->personalIdentityNumber() // '950910-0799'

//Since the numbers are different for male and female persons, optionally you can specify gender.
echo $faker->personalIdentityNumber('female') // '950910-0781'

Faker\Provider\zh_CN\Payment

<?php

// 生成一个随机的银行名称(基于真实的中国银行的列表)
echo $faker->bank; // '中国建设银行'

Faker\Provider\uk_UA\Payment

<?php

// Generates an Ukraine bank name (based on list of real Ukraine banks)
echo $faker->bank; // "Ощадбанк"

Faker\Provider\zh_TW\Person

<?php

// Generates a random personal identify number
echo $faker->personalIdentityNumber; // A223456789

Faker\Provider\zh_TW\Company

<?php

// Generates a random VAT / Company Tax number
echo $faker->VAT; //23456789

https://github.com/fzaninotto/Faker

posted @ 2017-10-12 11:55  丶老中医  阅读(6523)  评论(2编辑  收藏  举报
一切已经开始©2018 丶老中医