laravel faker 數據填充

laravel faker 數據填充

原文地址:https://www.cnblogs.com/love-snow/articles/7655450.htmlphp

Installation 安裝

laravel5 已經安裝,這裏不須要安裝了,其餘框架,能夠借鑑。html

composer require fzaninotto/faker

Basic Usage 基本用法

Use Faker\Factory::create() 要建立和初始化一個faker生成器,它能夠經過訪問您想要的數據類型的屬性來生成數據。ios

複製代碼
 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_CNlaravel

即便這個例子顯示了一個屬性訪問, 每一個調用 $faker->name 的調用都產生一個不一樣的(隨機的)結果. 這是由於 Faker 調用了__get() 魔術方法, 而且將 Faker\Generator->$property 調用給 Faker\Generator->format($property).git

提示:對於快速生成的假數據,您還可使用Faker做爲命令行工具,這要歸功於僞造者-cli。github

複製代碼
 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生成器有不少, 打包在「提供者」中。下面是默認區域中綁定的格式化程序的列表。web

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(), 在任何提供者以前調用。.chrome

複製代碼
// 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).shell

複製代碼
<?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)
// )

在前面的例子中,Book和Author模型共享一段關係。因爲做者實體是首先填充的,因此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函數,格式化程序不會複製相同的假數據。使用$faker或mt_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

// 生成一個香港移動電話號碼(從五、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

相關文章
相關標籤/搜索