首页 > 代码库 > Interface接口的设置是由其他模块决定的

Interface接口的设置是由其他模块决定的

描述:我写了个登陆器   无非就是登陆和注册这2个功能,当然还有一个验证码功能

根据职责性,我登陆器不涉及任何用户有关操作。

但我需要规定用户模型必须有以下几个功能,我登陆器才能使用,登陆、注册、根据名字获取用户的个人信息。

所以我设置如下

<?php
interface IMember {
 
 /**
  * 根据用户名获取用户信息 用户名不指定可以是邮箱、昵称或者手机号码
  * @param String $username
  */
 public function getOneMemberByUsername($username);
 
 /**
  * 登陆检测
  */
 public function login($user);
 /**
  * 新增用户
  */
 public function register($user);
}

 

有了这个规定之后,我的登陆器就可以写了

<?php
/**
 * WCMS 登陆器 只跟用户有关注册、登陆有关 其他无关 判断有无登陆 可以设置cookie
 * 描述 调用了MemberService指定接口  login  register getOneMemberByUsername
 * @author wolf
 * @since 2014-08-02 
 * @version 第4次简化
 *
 */
class AnonymousController extends Action {
 
 const COOKIENAME = ‘user‘;
 /**
  * 管理员登录口
  */
 public function admin() {
  if (isset ( $_COOKIE [COOKIENAME] )) {
   $userInfo = self::getMemberService ()->getOneMemberByUsername ( $_COOKIE [COOKIENAME] );
   $this->view ()->assign ( ‘user‘, $userInfo );
   $this->view ()->assign ( "userinfo", $userInfo );
  }
  $this->view ()->display ( ‘file:anonymous/login.tpl‘ );
 }
 
 /**
  * 用户注册  接口  调用用户服务
  * 只检测提交的字段是否合法
  * @todo 默认用户组未添加
  */
 public function register() {
  $group = self::getMemberService ()->getMemberGroup ();
  $this->view ()->assign ( "group", $group );
  $this->view ()->display ( ‘mysql:register.tpl‘ );
 
 }
 /**
  * 用户提交注册
  */
 public function setRegister() {
  $rs = self::getMemberService ()->register ( $_POST );
  $this->sendNotice ( $rs, null, false );
 }
 
 /**
  * 普通会员登录
  */
 public function login() {
  //导入推荐用户
  $this->loginExtend ();
  if (isset ( $_COOKIE [COOKIENAME] )) {
   $userInfo = self::getMemberService ()->getOneMemberByUsername ( $_COOKIE [COOKIENAME] );
   $this->view ()->assign ( ‘user‘, $userInfo );
   $this->view ()->assign ( "userinfo", $userInfo );
  }
  
  $this->view ()->display ( ‘mysql:login.tpl‘ );
 }
 
 /**
  * 登录扩展信息 DIY
  */
 private function loginExtend() {
  $userface = self::getMemberService ()->getRandFace ( 12 );
  $this->view ()->assign ( ‘face‘, $userface );
 }
 
 /**
  * 生成验证码
  */
 public function captcha() {
  require ‘Captcha.php‘;
  //确保每次都能取到新值
  unset ( $_SESSION [‘authum_session‘] );
  // 实例化一个对象
  $_vc = new Captcha ();
  $_vc->doimg ();
  $_SESSION [‘authnum_session‘] = $_vc->getCode ();
 }
 
 /**
  * 登录验证
  */
 public function setLogin() {
  $rs = self::getMemberService ()->login ( $_POST );
  //登陆成功 默认记录8个小时
  if ($rs == SUCCESS) {
   setcookie ( COOKIENAME, $_POST [‘username‘], time () + 3600 * 10, "/" );
  }
  $this->sendNotice ( $rs, null, false );
 }
 
 /**
  * 退出登录 同步登录
  */
 public function signout() {
  setcookie ( COOKIENAME, "", - 86400, "/" );
  $this->redirect ( "退出成功!", ‘/anonymous/login‘ );
 }
 
 /**
  * 获取用户服务类
  */
 public static function getMemberService() {
  return new MemberService ();
 }
}