自己写的PHP代码总是感觉很乱
巴扎黑
巴扎黑 2017-04-11 10:10:40
[PHP讨论组]

写代码的时候,总是1个方法里把全部逻辑都实现了,修改的时候写了注释,自己都晕头转向, 一点都没有用到面向对象,怎么样才能精简自己的代码,看上去思路清晰,一目了然,请教大神指条明路!下面是代码

public function qqLogin(){

    $appid = C('APPID');
    $openid = I('openid');
    $accesstoken = I('accesstoken');
    $pid = I('pid');
    $url = "https://graph.qq.com/user/get_user_info?access_token=".$accesstoken."&oauth_consumer_key=".$appid."&openid=".$openid;

// 获取QQ用户详细信息

    $result = $this->http_curl($url);
    $User = M('users');
    if($result['ret'] == 0){

// QQ注册,查看是否注册过了

        $userRes = M('user_auths')->where(array('identity_type'=>'qq','identifier'=>$openid))->find();
        if(!$userRes)
        {
            $User->startTrans(); //开启事物
//            添加到users表
            $userdata['phone'] = 0;
            $res_user_uid = $User->add($userdata);
//            添加到user_auth表
            $userAuth['user_id'] = $res_user_uid;
            $userAuth['identity_type'] = 'qq';
            $userAuth['identifier'] = $openid;
            $userAuth['credential'] = $accesstoken;//第三方登陆的openid
            $userAuth['token'] = $this->create_token();//第三方登陆的access_token
            $userAuth['login_time'] = time();
            $userAuth['pid'] = $pid;//客户端推送的唯一ID
            $res_user_auths = M('user_auths')->add($userAuth);
            if($res_user_auths && $res_user_uid){
                $User->commit(); //如果两张表都添加成功 执行事物 添加操作
                $res = $User->where(array('id'=>$res_user_uid))->field('nickname,avatar,id')->find();
                $code = 1;
                $msg = '查询成功';
                $data['uId'] = $res['id'];
                if($res['nickname'] != "")
                {
                    $data['uName'] = $res['nickname'];    
                }
                if($res['avatar'] != "")
                {
                    $data['uIc'] = $res['avatar'];
                }
                if($res['phone'] != 0)
                {
                    $data['uTel'] = $res['phone'];
                }
                $data['uToken'] = M('user_auths')->where(array("id"=>$res_user_auths))->getField('token');
                echoMsg($code, $msg, $data); 
            }else
            {
                $User->rollback(); //事物回滚
            }
        
        }else{

// 登陆时 获取新的token值

                $token = $this->create_token();
                M('user_auths')->where(array("id"=>$userRes['id']))->save(array('token'=>$token,'login_time'=>time(),'pid'=>$pid));

// 返回数据信息

                $res = $User->where(array('id'=>$userRes['user_id']))->field('nickname,avatar,id')->find();
                $code = 1;
                $msg = '查询成功';
                $data['uId'] = $res['id'];
                if($res['nickname'] != "")
                {
                    $data['uName'] = $res['nickname'];    
                }
                if($res['avatar'] != "")
                {
                    $data['uIc'] = $res['avatar'];
                }
                if($res['phone'] != 0)
                {
                    $data['uTel'] = $res['phone'];
                }
                $data['uToken'] = M('user_auths')->where(array('id'=>$userRes['id']))->getField('token');
                echoMsg($code, $msg, $data);
        }
    }else{
            $code = 90001;
            $msg = '登陆失败';
            echoMsg($code, $msg);
    }

} 
巴扎黑
巴扎黑

全部回复(2)
黄舟

看到php辣眼睛代码太多了 能想到把代码写好说明有上进心的 完全受不了那些靠着混工作经验还想着涨工资的

下面进入正题 想要把代码写好首先建议看几遍PSR规范 让自己代码遵循规范会看起来更舒服 然后感觉有写重复的代码就想想办法怎么能把它们提取出来放到一个你认为合理的地方 还有一些函数很长或者嵌套很多层的 把你认为能提取出来起一个合理的函数名的代码提取出来放到一个单独的函数 经过这几步以后 你的代码应该已经相当具有可读性了 接下来想要更上一层楼你就要去深入的理解像MVC这些架构模式以及类的一些基本概念 之后看一看关于设计模式的书 每次写代码都尽量去做到完美 随着时间的积累 相信你的代码会越来越好

PHP中文网

多看看人家写的代码

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号