自己感受,如何解读别人的好的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 ?>

 

posted @ 2013-01-17 17:59  linksgo2011  阅读(267)  评论(0编辑  收藏  举报