goclearsky / name-gen
一个用于测试目的生成名称的 CakePHP 插件
0.2.1
2018-11-23 16:58 UTC
Requires
- cakephp/cakephp: ^3.4
Requires (Dev)
- phpunit/phpunit: ^5.7|^6.0
README
一个插件,可以在开发过程中生成随机名称。
安装
您可以使用 composer 将此插件安装到您的 CakePHP 应用程序中。
composer require goclearsky/name-gen
使用
Generator 类定义了 getNames 函数。
static function getNames($size, $gender = null, $locale = null, $cardinality = 2)
Size 是您请求的人数名称。Gender 是一个字符。Locale 是典型的区域值形式。目前可用的是 en_US。最后一个参数表示每个生成的名称的基数。如果需要中间名,则使用 3,否则 2 只提供给定名和姓氏。
cardinality == 3 ---> Amy Abigail Adams
cardinality == 2 ---> Amy Adams
如果基数是 3,则每个名称都会进行检查,以确保给定名和中间名不同。无论基数如何,都会检查集合以确保每个名称都是唯一的。
典型用途可能是创建一个 shell,该 shell 使用 getNames 请求一组名称,然后按需将它们保存到您的数据库表中。也可以用于快速生成测试源数据。
namespace App\Shell; use ClearSky\NameGen\Utility\Generator; class DevShell extends Shell { public static function name() { $names = Generator::getNames(3, 'F'); $query = TableRegistry::get('Users')->query(); $query->insert(['first_name', 'last_name']); foreach ($names as $name) { $query->values([ 'first_name' => $name['given'], 'last_name' => $name['family'], ]); } $query->execute(); print_r($names); } }
上面的 shell 生成以下输出并将这些名称保存到用户表中;
miket@dev:~/workspace/myapp $ cake dev name Array ( [0] => Array ( [given] => Amy [family] => Jones ) [1] => Array ( [given] => Laura [family] => Brooks ) [2] => Array ( [given] => Sara [family] => Morgan ) ) miket@dev:~/workspace/myapp $
贡献
欢迎所有建议和反馈。有助于提高插件普遍吸引力的一个因素是拥有更多不同国家的种子。
限制/待办事项
添加异常处理。算法不是穷尽的。有可能 a) 请求比从抽取的池中可以唯一提供的人数更多的名称,以及 b) 请求比通过简单地随机选择一个名称并检查唯一性更合理的名称。因此,getNames() 实际上可以返回比请求的结果集更小的结果集。如果这很重要,则可以在返回时检查集合大小,或者根据池大小减少请求的大小。目前,在 2012 年硬件上,可以在不到 1 秒内生成 5000 个名称。