如何使用表达式引擎模块添加新成员


How do i add a new member with an ExpressionEngine module?

我正在构建一个 ExpressionEngine 模块,该模块需要能够向系统添加新成员。核心模块似乎不是为第三方模块使用而构建的,这似乎给我留下了两种略显笨拙的方法。

第一种是使用成员核心模块的register_member方法使用的方法:

function register_member()
{
    if ( ! class_exists('Member_register'))
    {
        require PATH_MOD.'member/mod.member_register.php';
    }
    $MR = new Member_register();
    foreach(get_object_vars($this) as $key => $value)
    {
        $MR->{$key} = $value;
    }
    $MR->register_member();
}

这似乎有点脏,因为我必须从我的自定义模块找出到 mod.member_register.php 文件的正确路线。

第二种方法是将成员记录直接插入数据库,这似乎更糟,因为我会避免使用所有现有的创建成员的代码。这两种方法似乎都不是那么干净,谁能提出更好的方法?

第一种方法是使用 register_member 成员模块使用 [...]

我会对重用或包含 ExpressionEngine 自己的成员模块功能持谨慎态度,因为自由职业者许可证不包括任何成员管理功能......因此,要求一个可能不存在的文件并不是一个好主意。

此外,EllisLab在EE 2.2开发人员预览版公告中表示,未来他们将更加严格地执行公共/私有/受保护的类变量和方法。

第二种方法是插入 会员记录直接进入 数据库似乎比我更糟糕 避免所有现有代码 用于创建成员。

我完全同意 - 更不用说这可能会绕过注册新用户时发生的许多内置条件和安全检查。

附带说明一下,Solspace用户模块提供了从控制面板外部注册新成员的功能,因此该功能之前已由模块完成。

这两种方法似乎都不是 干净,任何人都可以建议 更好的方法?

这是一个很好的问题,可以通过将其发布到更多 ExpressionEngine 开发人员可以看到它的地方(例如,在 ExpressionEngine Pro 网络讨论论坛或开发和编程论坛中(来更好地回答。