goclearsky/name-gen

一个用于测试目的生成名称的 CakePHP 插件

安装: 4

依赖者: 0

建议者: 0

安全性: 0

星星: 0

观察者: 2

分支: 0

开放问题: 0

类型:cakephp-plugin

0.2.1 2018-11-23 16:58 UTC

This package is auto-updated.

Last update: 2024-09-24 05:59:34 UTC


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 个名称。