laravel faker 数据填充 中文数据填充 单元测试数据填充 数据的类型有哪些?
Installation 安装
laravel5 已经安装,这里不需要安装了,其他框架,可以借鉴。
composer require fzaninotto/faker
Basic Usage 基本用法
Use Faker\Factory::create() 要创建和初始化一个faker生成器,它可以通过访问您想要的数据类型的属性来生成数据。
1 <?php 2 // 包含 Faker 的 autoloader 3 require_once \'/path/to/Faker/src/autoload.php\'; 4 // 或者,使用另一个psr-0兼容的自动加载器(例如,如Symfony2类加载器) 5 6 // 使用工厂创建一个Faker生成器实例 7 $faker = Faker\Factory::create(\'zh_CN\'); //如果使用中文填充数据可以加入 ‘zh_CN’, 不需要的可以留空 8 9 // 通过访问属性生成数据 10 echo $faker->name; 11 // \'Lucy Cechtelar\'; 12 echo $faker->address; 13 // "426 Jordy Lodge 14 // Cartwrightshire, SC 88120-6700" 15 echo $faker->text; 16 // Dolores sit sint laboriosam dolorem culpa et autem. Beatae nam sunt fugit 17 // et sit et mollitia sed. 18 // Fuga deserunt tempora facere magni omnis. Omnis quia temporibus laudantium 19 // sit minima sint.
中文参考:https://github.com/fzaninotto/Faker/tree/master/src/Faker/Provider/zh_CN
即使这个例子显示了一个属性访问, 每个调用 $faker->name 的调用都产生一个不同的(随机的)结果. 这是因为 Faker 调用了__get() 魔术方法, 并且将 Faker\Generator->$property 调用给 Faker\Generator->format($property).
提示:对于快速生成的假数据,您还可以使用Faker作为命令行工具,这要归功于伪造者-cli。
1 <?php 2 for ($i=0; $i < 10; $i++) { 3 echo $faker->name, "\n"; 4 } 5 // Adaline Reichel 6 // Dr. Santa Prosacco DVM 7 // Noemy Vandervort V 8 // Lexi O\'Conner 9 // Gracie Weber 10 // Roscoe Johns 11 // Emmett Lebsack 12 // Keegan Thiel 13 // Wellington Koelpin II 14 // Ms. Karley Kiehn V
Formatters 格式化器
每个生成器属性 (例如 name, address, and lorem) 都被称谓 "formatters". 一个faker生成器有很多, 打包在“提供者”中。下面是默认区域中绑定的格式化程序的列表。
Faker\Provider\Base 基本
randomDigit // 7 randomDigitNotNull // 5 randomNumber($nbDigits = NULL, $strict = false) // 79907610 randomFloat($nbMaxDecimals = NULL, $min = 0, $max = NULL) // 48.8932 numberBetween($min = 1000, $max = 9000) // 8567 randomLetter // \'b\' // 返回一个给定数组的随机有序序列 randomElements($array = array (\'a\',\'b\',\'c\'), $count = 1) // array(\'c\') randomElement($array = array (\'a\',\'b\',\'c\')) // \'b\' shuffle(\'hello, world\') // \'rlo,h eoldlw\' shuffle(array(1, 2, 3)) // array(2, 1, 3) numerify(\'Hello ###\') // \'Hello 609\' lexify(\'Hello ???\') // \'Hello wgt\' bothify(\'Hello ##??\') // \'Hello 42jz\' asciify(\'Hello ***\') // \'Hello R6+\' regexify(\'[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\'); // sm0@y8k96a.ej
Faker\Provider\Lorem 文本
word // \'aut\' words($nb = 3, $asText = false) // array(\'porro\', \'sed\', \'magni\') sentence($nbWords = 6, $variableNbWords = true) // \'Sit vitae voluptas sint non voluptates.\' sentences($nb = 3, $asText = false) // array(\'Optio quos qui illo error.\', \'Laborum vero a officia id corporis.\', \'Saepe provident esse hic eligendi.\') paragraph($nbSentences = 3, $variableNbSentences = true) // \'Ut ab voluptas sed a nam. Sint autem inventore aut officia aut aut blanditiis. Ducimus eos odit amet et est ut eum.\' paragraphs($nb = 3, $asText = false) // array(\'Quidem ut sunt et quidem est accusamus aut. Fuga est placeat rerum ut. Enim ex eveniet facere sunt.\', \'Aut nam et eum architecto fugit repellendus illo. Qui ex esse veritatis.\', \'Possimus omnis aut incidunt sunt. Asperiores incidunt iure sequi cum culpa rem. Rerum exercitationem est rem.\') text($maxNbChars = 200) // \'Fuga totam reiciendis qui architecto fugiat nemo. Consequatur recusandae qui cupiditate eos quod.\'
Faker\Provider\en_US\Person 人物
title($gender = null|\'male\'|\'female\') // \'Ms.\' titleMale // \'Mr.\' titleFemale // \'Ms.\' suffix // \'Jr.\' name($gender = null|\'male\'|\'female\') // \'Dr. Zane Stroman\' firstName($gender = null|\'male\'|\'female\') // \'Maynard\' firstNameMale // \'Maynard\' firstNameFemale // \'Rachel\' lastName // \'Zulauf\'
Faker\Provider\en_US\Address 地址
cityPrefix // \'Lake\' secondaryAddress // \'Suite 961\' state // \'NewMexico\' stateAbbr // \'OH\' citySuffix // \'borough\' streetSuffix // \'Keys\' buildingNumber // \'484\' city // \'West Judge\' streetName // \'Keegan Trail\' streetAddress // \'439 Karley Loaf Suite 897\' postcode // \'17916\' address // \'8888 Cummings Vista Apt. 101, Susanbury, NY 95473\' country // \'Falkland Islands (Malvinas)\' latitude($min = -90, $max = 90) // 77.147489 longitude($min = -180, $max = 180) // 86.211205
Faker\Provider\en_US\PhoneNumber 电话号码
phoneNumber // \'201-886-0269 x3767\' tollFreePhoneNumber // \'(888) 937-7238\' e164PhoneNumber // \'+27113456789\'
Faker\Provider\en_US\Company 公司
catchPhrase // \'Monitored regional contingency\' bs // \'e-enable robust architectures\' company // \'Bogan-Treutel\' companySuffix // \'and Sons\' jobTitle // \'Cashier\'
Faker\Provider\en_US\Text 文本
realText($maxNbChars = 200, $indexSize = 2) // "And yet I wish you could manage it?) \'And what are they made of?\' Alice asked in a shrill, passionate voice. \'Would YOU like cats if you were never even spoke to Time!\' \'Perhaps not,\' Alice replied."
Faker\Provider\DateTime 日期时间
unixTime($max = \'now\') // 58781813 dateTime($max = \'now\', $timezone = date_default_timezone_get()) // DateTime(\'2008-04-25 08:37:17\', \'UTC\') dateTimeAD($max = \'now\', $timezone = date_default_timezone_get()) // DateTime(\'1800-04-29 20:38:49\', \'Europe/Paris\') iso8601($max = \'now\') // \'1978-12-09T10:10:29+0000\' date($format = \'Y-m-d\', $max = \'now\') // \'1979-06-09\' time($format = \'H:i:s\', $max = \'now\') // \'20:49:42\' dateTimeBetween($startDate = \'-30 years\', $endDate = \'now\', $timezone = date_default_timezone_get()) // DateTime(\'2003-03-15 02:00:49\', \'Africa/Lagos\') dateTimeInInterval($startDate = \'-30 years\', $interval = \'+ 5 days\', $timezone = date_default_timezone_get()) // DateTime(\'2003-03-15 02:00:49\', \'Antartica/Vostok\') dateTimeThisCentury($max = \'now\', $timezone = date_default_timezone_get()) // DateTime(\'1915-05-30 19:28:21\', \'UTC\') dateTimeThisDecade($max = \'now\', $timezone = date_default_timezone_get()) // DateTime(\'2007-05-29 22:30:48\', \'Europe/Paris\') dateTimeThisYear($max = \'now\', $timezone = date_default_timezone_get()) // DateTime(\'2011-02-27 20:52:14\', \'Africa/Lagos\') dateTimeThisMonth($max = \'now\', $timezone = date_default_timezone_get()) // DateTime(\'2011-10-23 13:46:23\', \'Antarctica/Vostok\') amPm($max = \'now\') // \'pm\' dayOfMonth($max = \'now\') // \'04\' dayOfWeek($max = \'now\') // \'Friday\' month($max = \'now\') // \'06\' monthName($max = \'now\') // \'January\' year($max = \'now\') // \'1993\' century // \'VI\' timezone // \'Europe/Paris\'
Faker\Provider\Internet 互联网
email // \'tkshlerin@collins.com\' safeEmail // \'king.alford@example.org\' freeEmail // \'bradley72@gmail.com\' companyEmail // \'russel.durward@mcdermott.org\' freeEmailDomain // \'yahoo.com\' safeEmailDomain // \'example.org\' userName // \'wade55\' password // \'k&|X+a45*2[\' domainName // \'wolffdeckow.net\' domainWord // \'feeney\' tld // \'biz\' url // \'http://www.skilesdonnelly.biz/aut-accusantium-ut-architecto-sit-et.html\' slug // \'aut-repellat-commodi-vel-itaque-nihil-id-saepe-nostrum\' ipv4 // \'109.133.32.252\' localIpv4 // \'10.242.58.8\' ipv6 // \'8e65:933d:22ee:a232:f1c1:2741:1f10:117c\' macAddress // \'43:85:B7:08:10:CA\'
Faker\Provider\UserAgent 用户代理
userAgent // \'Mozilla/5.0 (Windows CE) AppleWebKit/5350 (KHTML, like Gecko) Chrome/13.0.888.0 Safari/5350\' chrome // \'Mozilla/5.0 (Macintosh; PPC Mac OS X 10_6_5) AppleWebKit/5312 (KHTML, like Gecko) Chrome/14.0.894.0 Safari/5312\' firefox // \'Mozilla/5.0 (X11; Linuxi686; rv:7.0) Gecko/20101231 Firefox/3.6\' safari // \'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_7_1 rv:3.0; en-US) AppleWebKit/534.11.3 (KHTML, like Gecko) Version/4.0 Safari/534.11.3\' opera // \'Opera/8.25 (Windows NT 5.1; en-US) Presto/2.9.188 Version/10.00\' internetExplorer // \'Mozilla/5.0 (compatible; MSIE 7.0; Windows 98; Win 9x 4.90; Trident/3.0)\'
Faker\Provider\Payment 支付
creditCardType // \'MasterCard\' creditCardNumber // \'4485480221084675\' creditCardExpirationDate // 04/13 creditCardExpirationDateString // \'04/13\' creditCardDetails // array(\'MasterCard\', \'4485480221084675\', \'Aleksander Nowak\', \'04/13\') // 生成一个随机的国际银行账号(IBAN). 设置 $countryCode 为空 生成一个随机的国家 iban($countryCode) // \'IT31A8497112740YZ575DJ28BP4\' swiftBicNumber // \'RZTIAT22263\'
Faker\Provider\Color 颜色
hexcolor // \'#fa3cc2\' rgbcolor // \'0,255,122\' rgbColorAsArray // array(0,255,122) rgbCssColor // \'rgb(0,255,122)\' safeColorName // \'fuchsia\' colorName // \'Gainsbor\'
Faker\Provider\File 文件
fileExtension // \'avi\' mimeType // \'video/x-msvideo\' // 将一个随机文件从源文件复制到目标目录,并返回fullpath或filename file($sourceDir = \'/tmp\', $targetDir = \'/tmp\') // \'/path/to/targetDir/13b73edae8443990be1aa8f1a483bc27.jpg\' file($sourceDir, $targetDir, false) // \'13b73edae8443990be1aa8f1a483bc27.jpg\'
Faker\Provider\Image 图片
// Image generation provided by LoremPixel (http://lorempixel.com/) imageUrl($width = 640, $height = 480) // \'http://lorempixel.com/640/480/\' imageUrl($width, $height, \'cats\') // \'http://lorempixel.com/800/600/cats/\' imageUrl($width, $height, \'cats\', true, \'Faker\') // \'http://lorempixel.com/800/400/cats/Faker\' imageUrl($width, $height, \'cats\', true, \'Faker\', true) // \'http://lorempixel.com/grey/800/400/cats/Faker/\' Monochrome image image($dir = \'/tmp\', $width = 640, $height = 480) // \'/tmp/13b73edae8443990be1aa8f1a483bc27.jpg\' image($dir, $width, $height, \'cats\') // \'tmp/13b73edae8443990be1aa8f1a483bc27.jpg\' it\'s a cat! image($dir, $width, $height, \'cats\', false) // \'13b73edae8443990be1aa8f1a483bc27.jpg\' it\'s a filename without path image($dir, $width, $height, \'cats\', true, false) // it\'s a no randomize images (default: `true`) image($dir, $width, $height, \'cats\', true, true, \'Faker\') // \'tmp/13b73edae8443990be1aa8f1a483bc27.jpg\' it\'s a cat with \'Faker\' text. Default, `null`.
Faker\Provider\Uuid UUID
uuid // \'7e57d004-2b97-0e7a-b45f-5387367791cd\'
Faker\Provider\Barcode 条形码
ean13 // \'4006381333931\' ean8 // \'73513537\' isbn13 // \'9790404436093\' isbn10 // \'4881416324\'
Faker\Provider\Miscellaneous 各种各样的
boolean // false boolean($chanceOfGettingTrue = 50) // true md5 // \'de99a620c50f2990e87144735cd357e7\' sha1 // \'f08e7f04ca1a413807ebc47551a40a20a0b4de5c\' sha256 // \'0061e4c60dac5c1d82db0135a42e00c89ae3a333e7c26485321f24348c7e98a5\' locale // en_UK countryCode // UK languageCode // en currencyCode // EUR emoji //