• PHP博客小项目之知识点(1)


    一、博客系统介绍

    •  Blog、Bloger、web log(网络日志)
    •  博客主要发布一些文章、图片;博客一般都是个人博客;
    •  博客的文章,一般都是按照时间倒序排列;
    •  博客,仅音译,英文名为Blogger,为Web Log(网络日志)的混成词。
    •  博客就是以网络作为载体,简易迅速便捷地发布自己的心得,及时有效轻松地与他人进行交流,再集丰富多彩的个性化展示于一体的综合性平台。
    •  很多博客都提供丰富多彩的模板等功能,这使得不同的博客各具特色。
    •  Blog是继Email、BBS、ICQ之后出现的第四种网络交流方式,至今已十分受大家的欢迎,是网络时代的个人“读者文摘”,是以超级链接为武器的网络日记,是代表着新的生活方式和新的工作方式,更代表着新的学习方式。
    •  博客,通常由个人管理、不定期张贴新的文章的网站。
    •  博客上的文章通常根据张贴时间,以倒序方式由新到旧排列。
    •  许多博客专注在特定的课题上提供评论或新闻。
    •  博客可以包含文字、图像、音乐、视频、链接等网络要素内容。
    •  博客是社会媒体网络的一部分。比较著名的有新浪、网易等博客。 

    二、个人思路:

    • 在写博客项目之前打算先总结一下博客项目用到的知识点,当总结完知识点后,再开始写整体的博客,最后回头查漏补缺看前面忘记写的知识点。

    面向对象设计模式

      1、什么是设计模式

    • 设计模式,就是前人帮我总结的面向对象设计的代码经验;
    • 设计模式,对于项目的维护十分方便。

     2、常用的设计模式

    • 单例模式:一个类只能创建一个对象,不管用什么办法;如:数据库对象
    • 工厂模式:根据传递的不同类名参数,生产不同类的对象;

    单例模式

     1、单例模式设计要求(三私一公)

    • 一私:私有的静态的保存对象的属性;
    • 一私:私有的构造方法,阻止类外new对象;
    • 一私:私有的克隆方法,阻止类外clone对象;
    • 一公:公共的中静态的创建对象的方法;

     2、单例模式的核心代码

    3、instanceof关键字

    • 描述:判断一个对象,是不是某个类的对象
    • 语法:$obj  instanceof  ClassName
    • 返回:如果是返回true,如果不是返回false。

    综合案例

    • 设计一个单例的数据库操作类
    • 创建一个连接数据库的公共文件
    • 查询输出所有的学生信息

    1、设计单例的数据库操作类

      1 <?php
      2 
      3 //最终的单例的数据库操作类
      4 
      5 final class Db
      6 
      7 {
      8 
      9        //私有的静态的保存对象的属性
     10 
     11        private static $obj = NULL;
     12 
     13        //数据库配置信息属性
     14 
     15        private $db_host;//主机名
     16 
     17        private $db_user;//用户名
     18 
     19        private $db_pass;//密码
     20 
     21        private $db_name;//数据库
     22 
     23        private $charset;//字符集
     24 
     25  
     26 
     27        //私有的构造方法:阻止类外new对象
     28 
     29        private function __construct($config)
     30 
     31        {
     32 
     33               $this->db_host = $config['db_host'];
     34 
     35               $this->db_user = $config['db_user'];
     36 
     37               $this->db_pass = $config['db_pass'];
     38 
     39               $this->db_name = $config['db_name'];
     40 
     41               $this->charset = $config['charset'];
     42 
     43               $this->connMySQL(); //连接数据库
     44 
     45               $this->selectDb(); //选择数据库
     46 
     47               $this->setCharacter(); //设置字符集
     48 
     49        }
     50 
     51  
     52 
     53        //私有的克隆方法:阻止类外clone对象
     54 
     55        private function __clone(){}
     56 
     57        //公共的静态的创建对象的方法
     58 
     59        public static function getInstance($config)
     60 
     61        {
     62 
     63               //判断对象是否存在,如果不存在,则创建
     64 
     65               if(!self::$obj instanceof self)
     66 
     67               {
     68 
     69                      //如果对象不存在,则创建
     70 
     71                      self::$obj = new self($config);
     72 
     73               }
     74 
     75               return self::$obj;//返回对象
     76 
     77        }
     78 
     79       
     80 
     81        //私有的连接数据库的方法
     82 
     83        private function connMySQL()
     84 
     85        {
     86 
     87               $link = @mysql_connect($this->db_host,$this->db_user,$this->db_pass);
     88 
     89               if(!$link)
     90 
     91               {
     92 
     93                      exit("PHP连接MySQL失败!");
     94 
     95               }
     96 
     97        }
     98 
     99  
    100 
    101        //私有的选择数据库的方法
    102 
    103        private function selectDb()
    104 
    105        {
    106 
    107               if(!mysql_select_db($this->db_name))
    108 
    109               {
    110 
    111                      exit("选择数据库{$this->db_name}失败!");
    112 
    113               }
    114 
    115        }
    116 
    117  
    118 
    119        //私有的设置数据库字符集
    120 
    121        private function setCharacter()
    122 
    123        {
    124 
    125               return $this->exec("set names {$this->charset}");
    126 
    127        }
    128 
    129  
    130 
    131        //执行SQL语句的方法:insert、update、delete、set
    132 
    133        public function exec($sql = NULL)
    134 
    135        {
    136 
    137               //$sql = "SELECT * FROM student"
    138 
    139               //SQL语句转成全小写
    140 
    141               $sql = strtolower($sql);
    142 
    143               //如果是SELECT语句,中止执行
    144 
    145               if(substr($sql,0,6)=="select")
    146 
    147               {
    148 
    149                      exit("SELECT语句不能调用该方法!");
    150 
    151               }
    152 
    153               //如果非SELECT语句
    154 
    155               return mysql_query($sql);
    156 
    157        }
    158 
    159       
    160 
    161        //私有的执行SQL语句的方法:select
    162 
    163        private function query($sql = NULL)
    164 
    165        {
    166 
    167               //SQL语句转成全小写
    168 
    169               $sql = strtolower($sql);
    170 
    171               //如果是非SELECT语句,中止执行
    172 
    173               if(substr($sql,0,6)!="select")
    174 
    175               {
    176 
    177                      exit("非SELECT语句不能调用此方法!");
    178 
    179               }
    180 
    181               //如果是SELECT语句,直接执行,返回结果集
    182 
    183               return mysql_query($sql);
    184 
    185        }
    186 
    187  
    188 
    189        //公共的返回多行数据的方法
    190 
    191        public function fetchAll($sql,$type=3)
    192 
    193        {
    194 
    195               //返回的数组的常量类型
    196 
    197               $types = array(
    198 
    199                      1 => MYSQL_NUM,
    200 
    201                      2 => MYSQL_BOTH,
    202 
    203                      3 => MYSQL_ASSOC
    204 
    205               );
    206 
    207  
    208 
    209               //执行SQL语句,并返回结果集
    210 
    211               $result = $this->query($sql);
    212 
    213              
    214 
    215               //循环取出结果集中所有行数据,并构建二维数组返回
    216 
    217               while($row = mysql_fetch_array($result,$types[$type]))
    218 
    219               {
    220 
    221                      $arr[] = $row;
    222 
    223               }
    224 
    225              
    226 
    227               //返回二维数组
    228 
    229               return $arr;
    230 
    231        }
    232 
    233  
    234 
    235        //析构方法
    236 
    237        public function __destruct()
    238 
    239        {
    240 
    241               //关闭当前的数据库连接
    242 
    243               mysql_close();
    244 
    245        }
    246 
    247 }
    248 
    249 ?>

    2 创建一个连接数据库的公共文件

     1 <?php
     2 
     3 //(0)定义类的自动加载函数
     4 
     5 function __autoload($className)
     6 
     7 {
     8 
     9        $filename = "./libs/$className.class.php";
    10 
    11        require_once($filename);
    12 
    13 }
    14 
    15 //(1)数据库配置信息
    16 
    17 $arr = array(
    18 
    19        'db_host' => 'localhost',
    20 
    21        'db_user' => 'root',
    22 
    23        'db_pass' => 'root',
    24 
    25        'db_name' => 'student',
    26 
    27        'charset' => 'utf8'
    28 
    29 );
    30 
    31 //(2)创建数据库对象
    32 
    33 $db = Db::getInstance($arr);
    34 
    35 //(3)遍历数组或对象的函数
    36 
    37 function dump($arr){
    38 
    39        echo "<pre>";
    40 
    41        print_r($arr);
    42 
    43        echo "</pre>";
    44 
    45 }
    46 
    47 ?>

    3. 查询输出所有的学生信息

    <?php
    
    header("content-type:text/html;charset=utf-8");
    
    //(1)包含连接数据库的文件
    
    require_once("./conn.php");
    
    //(2)构建查询的SQL语句
    
    $sql = "SELECT * FROM student ORDER BY id DESC";
    
    //(3)取回所有行数据
    
    $arr = $db->fetchAll($sql);
    
    ?>
    
    <!DOCTYPE html>
    
    <html>
    
    <head>
    
    <meta charset="utf-8">
    
    <title>HTML5 Document</title>
    
    </head>
    
     
    
    <body>
    
    <div style="text-align:center;padding-bottom:20px;">
    
           <h2>学生信息管理中心</h2>
    
           <a href="javascript:void(0)">添加学生</a> |
    
           共有250个学生!
    
    </div>
    
    <table width="600" border="1" bordercolor="#ccc" rules="all" align="center" cellpadding="5">
    
           <tr bgcolor="#f0f0f0">
    
                  <th>编号</th>
    
                  <th>姓名</th>
    
                  <th>性别</th>
    
                  <th>年龄</th>
    
                  <th>学历</th>
    
                  <th>工资</th>
    
                  <th>奖金</th>
    
                  <th>籍贯</th>
    
                  <th>操作选项</th>
    
           </tr>
    
           <?php
    
                  for($i=0;$i<count($arr);$i++){
    
           ?>
    
           <tr align="center">
    
                  <td><?php echo $arr[$i]['id']?></td>
    
                  <td><?php echo $arr[$i]['name']?></td>
    
                  <td><?php echo $arr[$i]['sex']?></td>
    
                  <td><?php echo $arr[$i]['age']?></td>
    
                  <td><?php echo $arr[$i]['edu']?></td>
    
                  <td><?php echo $arr[$i]['salary']?></td>
    
                  <td><?php echo $arr[$i]['bonus']?></td>
    
                  <td><?php echo $arr[$i]['city']?></td>
    
                  <td>
    
                         <a href="javascript:void(0)">修改</a> |
    
                         <a href="javascript:void(0)">删除</a>
    
                  </td>
    
           </tr>
    
           <?php }?>
    
           <tr>
    
                  <td colspan="9">显示分页的代码</td>
    
           </tr>
    
    </table>
    
    </body>
    
    </html>

    4.最后运行结果截图

    5.代码的文件目录

    • Libs里面是数据库单例
    • Conn.php是连接数据的公共文件
    • List.php是列表展示

    6.源代码

    链接: http://pan.baidu.com/s/1hsdrZTU 密码: xm5d

  • 相关阅读:
    2016012056+小学四则运算练习软件项目报告
    《构建之法》1,2,16章读后感
    我与软件
    散列函数的应用及其安全性
    EGener2四则运算出题器
    用jar包运行带GUI的java游戏
    关于《构建之法》第四章和第十七章的问题
    2016012070小学四则运算练习软件项目报告
    有关软件工程的一些问题
    300道随机四则运算小程序(java编写)
  • 原文地址:https://www.cnblogs.com/xnnhgz2016/p/6267042.html
Copyright © 2020-2023  润新知