原文地址: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