Php 从CUserIdentity调用控制器方法

Php 从CUserIdentity调用控制器方法,php,facebook,yii,facebook-login,Php,Facebook,Yii,Facebook Login,我正在用HybridAuth实现Facebook登录。我得到的FB档案还不错,但我有点困惑,不知道该怎么处理它。我将与我的registered users表进行比较,以检查我是否已经拥有FB配置文件中的用户电子邮件,如果已经拥有,则登录完成并使用存储的帐户,如果没有,我将创建一个新的用户帐户并将其存储在我的DB中。 问题是,当我创建一个新用户时,我在用户控制器中调用一个方法,如下所示: UserController::createUserSocialNetwork($userprofile);

我正在用HybridAuth实现Facebook登录。我得到的FB档案还不错,但我有点困惑,不知道该怎么处理它。我将与我的registered users表进行比较,以检查我是否已经拥有FB配置文件中的用户电子邮件,如果已经拥有,则登录完成并使用存储的帐户,如果没有,我将创建一个新的用户帐户并将其存储在我的DB中。 问题是,当我创建一个新用户时,我在用户控制器中调用一个方法,如下所示:

UserController::createUserSocialNetwork($userprofile);

Yii不允许我这样做,因为控制器文件的类尚未导入。我知道我可以在我的Yii配置文件中导入控制器类,或者我可以从扩展了
CUserIdentity
的类中使用
Yii::app()->runController
,我个人倾向于前者,但我不太确定它们是否是正确的方法。所以我的问题是:我应该如何在不损害Yii核心特性的情况下做到这一点?在配置中导入控制器文件是否违反Yii遵循的任何设计规则?

首先,我强烈建议在控制器操作中处理用户创建,而不是用户标识。
如果不可能,您可以将逻辑移动到控制器行为或帮助器类,甚至移动到用户模型(所有这些可选选项都不是最佳设计实践)。

您可以将逻辑从
UserController::createUserSocialNetwork
移动到
用户
模型中吗,并从
UserController::createUserSocialNetwork
和登录脚本调用
UserModel::createUserSocialNetwork
?为什么要首先在用户标识中处理用户创建?您不应该在控制器操作中处理它吗?我会更改应用程序的设计,并将此逻辑移动到用户模型(当然不是最佳实践)或创建帮助器class@Stu我不确定在控制器类之外创建操作是否是一种好的做法,但这可能是一种更简单的方法。@osmancode我意识到在CUserIdentity中创建用户很奇怪,部分原因是我不太确定CUserIdentity一开始是否可以被视为用户。您提出的迁移到模型类的建议似乎很好,但话说回来,这是否意味着我要将控件从控制器类中移除?