侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

不错的一篇面向对象的PHP开发模式(简写版)

php  /  管理员 发布于 7年前   167

include_once "include.php"; 
/* 
** 用途:用户系统数据抽象 
** 作者:岳信明 
** 时间:2005-8-30 10:05 
*/ 
class User { 
    var $id       = 0; 
    var $Name     = ""; 
    var $Password = ""; 

    var $db       = ""; 
    var $tpl      = ""; 

    /* 
    ** 函数功能:构造函数,指定类使用的数据库连接 
    ** 参数说明:$tpl,显示模板处事句柄;$userdb,数据库连接 
    ** 返 回 值:无 
    ** 作  者:岳信明 
    ** 创建时间:2005-8-30 10:37 
    */ 
    function User($vtpl = "", $userdb = "") { 
        if ($vtpl == "") { 
            global $tpl;    // 外部定义数据库连接 
            $this->tpl =& $tpl; 
        } else { 
            $this->tpl = $vtpl; 
        } 
        if ($userdb == "") { 
            global $db;    // 外部定义数据库连接 
            $this->db =& $db; 
        } else { 
            $this->db = $userdb; 
        } 
    } 
    /* 
    ** 函数功能:将数据存入数据库 
    ** 参数说明:无参数 
    ** 返 回 值:true/false,成功/失败 
    ** 作  者:岳信明 
    ** 创建时间:2005-8-30 10:24 
    */ 
    function savetodb() { 
        if ($this->Name == "") { 
            return false; 
        } 
        if ($this->id) { 
            $strSQL = sprintf("UPDATE user SET Name='%s', Password='%s' " 
                            . "WHERE id='%s'", 
                              $this->Name, 
                              $this->Password, 
                              $this->id 
                             ); 
        } else { 
            $strSQL = sprintf("INSERT user (Name, Password) " 
                            . "VALUES ('%s', '%s')", 
                              $this->Name, 
                              $this->Password 
                             ); 
        } 
        if ($this->db->query($strSQL)) { 
            return true; 
        } else { 
            return false; 
        } 
    } 

    /* 
    ** 函数功能:从数据库中获取记录 
    ** 参数说明:$id,记录编号 
    ** 返 回 值:true/false,成功/失败 
    ** 作  者:岳信明 
    ** 创建时间:2005-8-30 10:32 
    */ 
    function getfromdb($id = 0) { 
        if ($id) { 
            $strSQL = sprintf("SELECT * FROM user WHERE id='%s'", $id); 
        } else if ($this->id) { 
            $strSQL = sprintf("SELECT * FROM user WHERE id='%s'", 
                              $this->id 
                             ); 
        } else if ($this->Name != "") { 
            $strSQL = sprintf("SELECT * FROM user WHERE Name='%s'", 
                              $this->Name 
                             ); 
        } else { 
            return false; 
        } 
        $this->db->query($strSQL); 
        if ($this->db->next_record()) { 
            $this->id       = $this->db->f("id"); 
            $this->Name     = $this->db->f("Name"); 
            $this->Password = $this->db->f("Password"); 

            return true; 
        } else { 
            return false; 
        } 
    } 

    /* 
    ** 函数功能:从数据库中删除记录 
    ** 参数说明:$id,记录编号 
    ** 返 回 值:true/false,成功/失败 
    ** 作  者:岳信明 
    ** 创建时间:2005-8-30 10:47 
    */ 
    function delete($id = 0) { 
        if (is_array($id)) {    // 同时删除多条记录 
            foreach($id as $i) { 
                $strSQL = sprintf("DELETE FROM user WHERE id='%s'", $i); 
                $this->db->query($strSQL); 
            } 
            return true; 
        } else if ($id) { 
            $strSQL = sprintf("DELETE FROM user WHERE id='%s'", $id); 
        } else if ($this->id) { 
            $strSQL = sprintf("DELETE FROM user WHERE id='%s'", $this->id); 
        } else { 
            return false; 
        } 
        $this->db->query($strSQL); 
        return true; 
    } 

    /* 
    ** 函数功能:显示登陆界面 
    ** 参数说明:$placeholder,显示位置 
    ** 返 回 值:无 
    ** 作  者:岳信明 
    ** 创建时间:2005-8-30 11:00 
    */ 
    function showLogin($placeholder) { 
        $this->tpl->addBlockfile($placeholder, "user_showLogin", 
                                 "tpl.user_showLogin.html" 
                                ); 
        $this->tpl->setCurrentBlock("user_showLogin"); 
        $this->tpl->setVariable(array("user_Logintitle" => "用户登陆", 
                                      "strUsername"     => "用户名", 
                                      "strPassword"     => "密 码" 
                                     ) 
                               ); 
        $this->tpl->parseCurrentBlock("user_showLogin"); 
    } 

    /* 
    ** 函数功能:处理登陆信息 
    ** 参数说明:$placeholder,显示位置 
    ** 返 回 值:true/false,成功/失败 
    ** 作  者:岳信明 
    ** 创建时间:2005-8-30 11:12 
    */ 
    function getLogin($placeholder = "") { 
        if (isset($_POST["login"])) { 
            if ($_POST["username"] == "") { 
                if ($placeholder != "") { 
                    $this->tpl->setVarable($placeholder, "用户名不能为空!"); 
                } 
                return false; 
            } 
            $this->Name = $_POST["username"]; 
            $this->getfromdb(); 
            if ($this->Password() == $_POST["password"]) { 
                return true; 
            } 
        } else { 
            if ($placeholder != "") { 
                $this->tpl->setVarable($placeholder, "登陆失败!"); 
            } 
            return false; 
        } 
    } 

    /* 
    ** 函数功能:显示注册界面 
    ** 参数说明:$placeholder,显示位置 
    ** 返 回 值:无 
    ** 作  者:岳信明 
    ** 创建时间:2005-8-30 13:33 
    */ 
    function showRegister($placeholder) { 
        $this->tpl->addBlockfile($placeholder, "user_showRegister", 
                                 "tpl.user_showRegister.html" 
                                ); 
        $this->setCurrentBlock("user_shoRegister"); 
        // 在这里完成处理模板的代码 
        ... 

        $this->parseCurrentBlock("user_shoRegister"); 
    } 

    /* 
    ** 函数功能:处理注册信息 
    ** 参数说明:$placeholder,显示位置 
    ** 返 回 值:true/false,注册成功/注册失败 
    ** 作  者:岳信明 
    ** 创建时间:2005-8-30 15:49 
    */ 
    function getRegister($placeholder = "") { 
        if (isset($_POST["register")) { 
            if ($_POST["username"] == "") {    // 用户名合法性检查,可改成其它检查方式 
                if ($placeholder != "") { // 错误提示 
                    $this->tpl->setVariable($placeholder, "用户名不合法!"); 
                } 
                return false; 
            } 
            if ($_POST["password"] != $_POST["repassword"]) {    // 密码合法性检查 
                if ($placeholder != "") { // 错误提示 
                    $this->tpl->setVariable($placeholder, "两次输入密码不一致!"); 
                } 
                return false; 
            } 

            $strSQL = sprintf("SELECT COUNT(*) FROM user " 
                            . "WHERE Name='%s'", 
                              $this->Name 
                             ); 
            $this->db->query($strSQL); 
            $this->db->next_record(); 
            if ($this->db->f("COUNT(*)") > 0) { 
                return false; 
            } else { 
                $strSQL = sprintf("INSERT INTO user (Name, Password) " 
                                . "VALUES('%s', '%s')", 
                                  $this->Name, 
                                  $this->Password 
                                 ); 
                $this->db->query($strSQL); 
                return true; 
            } 
        } else { 
            return false; 
        } 
    } 
} // 类User定义结束 

/* 
** 用途:用户系统数据列表抽象 
** 作者:岳信明 
** 时间:2005-8-30 17:21 
*/ 
class UserList { 
    var $page      = 0; 
    var $pages     = 0; 
    var $pagesize  = 9; 
    var $recordsum = 0; 
    var $Users     = array(); 

    var $c; 
    var $db        = ""; 
    var $tpl       = ""; 

    /* 
    ** 函数功能:构造函数,新建一个类时对一些变量进行初始化 
    ** 参数说明:无参数 
    ** 返 回 值:无 
    ** 作  者:岳信明 
    ** 创建时间:2005-8-30 15:49 
    */ 
    function UserList($page = 1, $pagesize = 10, 
                      $c, $vtpl = "", $vdb = "") { 
        $this->page = $page; 
        $this->pagesize = $pagesize; 
        $this->condition = $condition; 
        if ($vdb != "") { 
            $this->db = $vdb; 
        } else { 
            global $db; 
            $this->db = $db; 
        } 
        if ($vtpl != "") { 
            $this->tpl = $vtpl; 
        } else { 
            $this->tpl = $tpl; 
        } 

        $strSQL = sprintf("SELECT COUNT(*) FROM user WHERE '%s'", 
                          $this->condition 
                         ); 
        $this->db->query($strSQL); 
        $this->db->next_record(); 
        $this->recordsum = $this->db->f("COUNT(*)"); 

        $this->pages = ceil($this->recordsum / $this->pagesize); 

        $strSQL = sprintf("SELECT * FROM user WHERE '%s' LIMIT '%s', '%s'", 
                          $this->condition, 
                          $this->page * $this->pagesize, 
                          $this->pagesize + 1 
                         ); 
        $this->db->query($strSQL); 
        for ($i = 0; $this->db->next_record(); $i ++) { 
            $this->Users[$i] = new User($this->tpl, $this->db); 
            $this->Users[$i]->id       = $this->db->f("id"); 
            $this->Users[$i]->Name     = $this->db->f("Name"); 
            $this->Users[$i]->Password = $this->db->f("Password"); 
        } 
    } 


    /* 
    ** 函数功能:显示列表 
    ** 参数说明:$placeholder,显示位置 
    ** 返 回 值:无 
    ** 作  者:岳信明 
    ** 创建时间:2005-8-31 9:16 
    */ 
    function showUserList($placeholder) { 
        $this->tpl->addBlockfile($placeholder, "showUserList", "tpl.showUserList.html"); 
        $this->tpl->setCurrentBlock("showUserList"); 
        //在这里添加相应的处理代码 
        $this->tpl->setVariable("strTitle", "用户列表"); 
        $strTitles = array("用户名", "操作"); 
        $RecordOperations = array("重设密码" => "operate=passwd&id=", 
                                  "删除"     => "operate=delete&id=" 
                                 ); 
        // 显示表头 
        foreach ($strTitles as $title) { 
            $this->tpl->setCurrentBlock("showRecordsTitle"); 
            $this->tpl->setVariable("strHead", $title); 
            $this->tpl->parseCurrentBlock("showRecordsTitle"); 
        } 
        // 显示记录及相关操作 
        if (is_array($this->Users)) {    // 有记录 
            foreach ($this->Users as $user) { 
                $this->tpl->setCurrentBlock("showRecords"); 
                $this->tpl->setCurrentBlock("showCell"); 
                $this->tpl->setVariable("strCell", $user); 
                $this->tpl->parseCurrentBlock("showCell"); 
                $this->tpl->setCurrentBlock("showCell"); 
                foreach ($RecordOperations as $operation => $linkOperation) { 
                    $this->tpl->setCurrentBlock("showOperations"); 
                    $this->tpl->setVariable("strOperation", $operation); 
                    $this->tpl->setVariable("strLink", $_SERVER["REQUEST_URI"] . $linkOperation . $user->id); 
                    $this->tpl->parseCurrentBlock("showOperations"); 
                } 
                $this->tpl->parseCurrentBlock("showCell"); 
                $this->tpl->parseCurrentBlock("showRecords"); 
            } 
        } else {    // 无记录 
            $this->tpl->setCurrentBlock("showRecords"); 
            $this->tpl->setCurrentBlock("showCell"); 
            $this->tpl->setVariable("strCell", "无记录"); 
            $this->tpl->parseCurrentBlock("showCell"); 
            $this->tpl->setCurrentBlock("showCell"); 
            $this->tpl->setVariable("strCell", " "); 
            $this->tpl->parseCurrentBlock("showCell"); 
            $this->tpl->parseCurrentBlock("showRecords"); 
        } 
        $this->tpl->setCurrentBlock("showPageInfo"); 
        $this->tpl->setVariable(array("intColspan" => "2", 
                                      "intRecordSum" => $this->recordsum, 
                                      "intPage"      => $this->page, 
                                      "intPages"     => $this->pages 
                                     ) 
                               ); 
        $this->tpl->parseCurrentBlock("showPageInfo"); 
        $this->tpl->parseCurrentBlock("showUserList"); 
    } 
} 
?>  


  • 上一条:
    用PHP实现多服务器共享SESSION数据的方法
    下一条:
    推荐Discuz!5的PHP代码高亮显示与实现可运行代码
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客