PHP教程:UCenter的MVC架构_PHP技巧_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

PHP教程:UCenter的MVC架构

作者:黑客防线网安PHP教程基地 来源:黑客防线网安PHP教程基地 浏览次数:0

本篇关键词:架构教程'方法
黑客防线网安网讯:  WebjxCom提示:PHP教程:UCenter的MVC架构.    UCenter是采用很经典的MVC架构    UCenter采用index.php单点入口    01.$m=getgpc('m');//判断加载哪一个Model   ...
  WebjxCom提示:PHP教程:UCenter的MVC架构.
  
  UCenter是采用很经典的MVC架构
  
  UCenter采用index.php单点入口
  
  01.$m=getgpc('m');//判断加载哪一个Model
  
  02.$a=getgpc('a');//判断加载哪一个Control
  
  03.$release=getgpc('release');
  
  04.if(empty($m)&&empty($a)){//如果直接访问则跳转到管理界面
  
  05.header('Location:admin.php');
  
  06.exit;
  
  07.}
  
  08.
  
  09.//版本判断
  
  10.if(empty($release)){
  
  11.define('RELEASE_ROOT',"release/20080429/");
  
  12.}elseif(intval($release)!=UC_SERVER_RELEASE){
  
  13.define('RELEASE_ROOT',"release/$release/");
  
  14.}else{
  
  15.define('RELEASE_ROOT','');
  
  16.}
  
  17.//加载基类基类中定义了很多的方法所有控制器类都继承于该基类
  
  18.if(file_exists(UC_ROOT.RELEASE_ROOT.'model/base.php')){
  
  19.requireUC_ROOT.RELEASE_ROOT.'model/base.php';
  
  20.}else{
  
  21.requireUC_ROOT.'model/base.php';
  
  22.}
  
  23.//判断是否加载的是指定的model
  
  24.if(in_array($m,array('app','frame','user','pm','pm_client','tag','feed','friend','domain','credit','mail','version'))){
  
  25.if(file_exists(UC_ROOT.RELEASE_ROOT."control/$m.php")){
  
  26.includeUC_ROOT.RELEASE_ROOT."control/$m.php";
  
  27.}else{
  
  28.includeUC_ROOT."control/$m.php";
  
  29.}
  
  30.$classname=$m.'control';//构造control类,如$m=user时control就为usercontrol
  
  31.$control=new$classname();
  
  32.$method='on'.$a;//构造方法名
  
  33.
  
  34.if(method_exists($control,$method)&&$a{0}!='_'){//如果方法存在且不是私有方法则执行该方法
  
  35.$data=$control->$method();
  
  36.echois_array($data)?$control->serialize($data,1):$data;
  
  37.exit;
  
  38.}elseif(method_exists($control,'_call')){//否则执行重载
  
  39.$data=$control->_call('on'.$a,'');
  
  40.echois_array($data)?$control->serialize($data,1):$data;
  
  41.exit;
  
  42.}else{
  
  43.exit('Actionnotfound!');
  
  44.}
  
  45.}else{
  
  46.exit('Modulenotfound!');
  
  47.}
  
  假定我们检测用户登录,那么对应的接口址就为:
  
  xxx/index.php?m=user&a=login
  
  这样,就会初始化usercontrol并调用onlogin方法,看看usercontrol的onlogin()
  
  01.//部分代码,有所删减
  
  02.classusercontrolextendsbase{
  
  03.function__construct(){
  
  04.$this->usercontrol();
  
  05.}
  
  06.functionusercontrol(){
  
  07.parent::__construct();//执行基类构造函数
  
  08.$this->load('user');//加载usermodel,base类的load方法首先从$_ENV环境变量中查找是否已设置$_ENV['user'],若未设置,则加载model/user.php,然后实例化该类并写入环境变量中,也就是此时,usermodel已经实例化了
  
  09.}
  
  10.functiononlogin(){
  
  11.$this->init_input();//调用基类init_input()方法
  
  12.$isuid=$this->input('isuid');//从基类中获取isuid
  
  13.$username=$this->input('username');//获取用户名
  
  14.$password=$this->input('password');//获取密码
  
  15.$checkques=$this->input('checkques');//获取是否回答提示问题
  
  16.$questionid=$this->input('questionid');//获取提示问题ID
  
  17.$answer=$this->input('answer');//获取回答
  
  18.if($isuid){//判断是用UID登录还是用用户名登录
  
  19.$user=$_ENV['user']->get_user_by_uid($username);//调用/model/user.php中的get_user_by_id方法从数据库中获取该用户的实例
  
  20.}else{
  
  21.$user=$_ENV['user']->get_user_by_username($username);
  
  22.}
  
  23.
  
  24.$passwordmd5=preg_match('/^w{32}$/',$password)?$password:md5($password);
  
  25.//判断各种可能的结果
  
  26.if(empty($user)){
  
  27.$status=-1;
  
  28.}elseif($user['password']!=md5($passwordmd5.$user['salt'])){
  
  29.$status=-2;
  
  30.}elseif($checkques&&$user['secques']!=''&&$user['secques']!=$_ENV['user']->quescrypt($questionid,$answer)){
  
  31.$status=-3;
  
  32.}else{
  
  33.$status=$user['uid'];
  
  34.}
  
  35.$merge=$status!=-1&&!$isuid&&$_ENV['user']->check_mergeuser($username)?1:0;
  
  36.returnarray($status,$user['username'],$password,$user['email'],$merge);
  
  37.}
  
  model层直接与数据库交互,control层与model层交互,得到结果,返回给view
  
  如果我们要扩展自己的方法该怎么办?
  
  首先,增加model类,定义我们所需要的方法,直接与DB进行交互。
  
  其次,增加control类,并继承自base,定义on{xxxx}方法,与相对的model交互,并返回结果
  
  
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-17591-1.html
网站维护教程更新时间:2012-09-21 05:21:54  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer