我正在构建一个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文件的正确路径。
第二种方法是将成员记录直接插入到数据库中,这似乎更糟糕,因为我将避免创建成员的所有现有代码。这些方法似乎都不那么干净,有人能提出更好的方法吗?
答案 0 :(得分:1)
第一种方法是使用
register_member
方法 会员模块使用[...]
我会谨慎重用或包含ExpressionEngine自己的会员模块功能,因为Freelancer License不包含任何会员管理功能......因此需要可能不存在的文件这不是一个好主意。
此外,EllisLab在EE 2.2 Developer Preview announcement中表示,未来他们将更加严格地执行公共/私人/受保护的类变量和方法。
第二种方法是插入 会员记录直接进入 数据库似乎比我想的更糟糕 避免所有现有的代码 用于创建成员。
我完全同意 - 更不用说这可能会规避注册新用户时发生的许多内置条件和安全检查。
在旁注中,Solspace User Module提供了从控制面板外部注册新成员的功能,因此功能已由模块完成。
这些方法似乎都不是 干净,任何人都可以建议 更好的方法?
这是一个很好的问题,可以通过将其发布到更多ExpressionEngine Developers可能会看到的地方来更好地解答 - 例如,在ExpressionEngine Pro Network Discussion forum或Development and Programming forum中。