• 自己感受,如何解读别人的好的PHP代码


    今天写了一个解析国家行政区域的类,但是看到别人的代码,自己觉得的特别好,评论也很好,但是我看了半天没有看懂,现在写出来分析下,先贴上代码

    我把分析放到注释中去

     1 <?php
     2 
     3 // config
     4 $host     = '';
     5 $dbname   = '';
     6 $charset  = '';
     7 $username = '';
     8 $password = '';
     9 
    10 set_time_limit(0);
    11 
    12 $dsn = "mysql:host={$host};dbname={$dbname};charset={$charset}";
    13 
    14 $options = array(
    15     PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    16 );
    17 
    18 $dbh = new PDO($dsn, $username, $password, $options);
    19 
    20 $sth = $dbh->prepare('
    21     INSERT INTO region (id, parent_id, name)
    22     VALUES (:id, :parent_id, :name)
    23 ');
    24 //前面是数据库结构,这里开始吧
    25 $parent = array();  //一个使用$level索引的父ID数组
    26 
    27 $handle = fopen('data.txt', 'r'); //文件打开句柄
    28 
    29 while (!feof($handle)) {  //判断是否是文件末尾
    30     $row = trim(fgets($handle));  //读取一行并去除两端空格
    31 
    32     if (!preg_match('/^(\d+)(\s+)(.+)$/', $row, $matches)) {
    33         continue;   //正则匹配到一个数组
    34     }
    35 
    36     list($row, $id, $delimiter, $name) = $matches;  //拆散数组
    37 
    38     if (!isset($separator)) {   //亮点出现了,这里是一个判断缩进长度的方法,定义一个由几个空格组成的缩进单位
    39         $separator = $delimiter;
    40     }
    41 
    42     $level = substr_count($delimiter, $separator);  //计算缩进单位获取区域级别
    43 
    44     $parent_id = $level > 1 ? $parent[$level - 1] : 0;   //如果当前不是根的级别,就获取到当前的父ID,这里的上下文比较难理解
    45 
    46     $parent[$level] = $id;   //根据级别生成一个父ID 
    47 
    48     $sth->bindValue(':id', $id, PDO::PARAM_INT);
    49     $sth->bindValue(':parent_id', $parent_id, PDO::PARAM_INT);
    50     $sth->bindValue(':name', $name);
    51 
    52     $sth->execute();
    53 }
    54 
    55 fclose($handle);
    56 
    57 ?>
  • 相关阅读:
    约瑟夫问题的JAVA实现(借鉴别人的代码+自己分析理解)
    ubuntu 与windows双系统记录
    重装windows7
    浏览器专题之缓存url请求
    js实现函数重载
    用python实现网上书店
    flex与bison应用实例
    前端小游戏之拼图功夫熊猫
    细说javascript的对象
    [LeetCode 1712] Ways to Split Array Into Three Subarrays
  • 原文地址:https://www.cnblogs.com/linksgo2011/p/2864981.html
Copyright © 2020-2023  润新知