原文地址:https://www.cnblogs.com/love-snow/articles/7655450.htmlphp
laravel5 已經安裝,這裏不須要安裝了,其餘框架,能夠借鑑。html
composer require fzaninotto/faker
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
每一個生成器屬性 (例如 name
, address
, 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>
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!"; }
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!數據庫
Faker 爲對象-關係和對象文檔映射器提供適配器 (currently, Propel, Doctrine2, CakePHP, Spot2, Mandango 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(); }, ));
您可能但願獲得相同的生成的數據,例如,在使用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\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對象。在這種狀況下,提供者的全部公共方法均可用於生成器。
下面的腳本生成一個有效的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>
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