category_helper.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 16/5/9
  6. * Time: 下午9:06
  7. */
  8. class category_helper
  9. {
  10. private $file_name = '';
  11. private $mCategories = NULL;
  12. private $mCids = NULL;
  13. static private $stInstance = NULL;
  14. static public function instance()
  15. {
  16. if(self::$stInstance == NULL) {
  17. self::$stInstance = new category_helper();
  18. }
  19. return self::$stInstance;
  20. }
  21. private function __construct()
  22. {
  23. $this->mCids = array();
  24. $this->file_name = BASE_DATA_PATH . '/sales/category.xml';
  25. self::load_xml($this->file_name);
  26. }
  27. private function load_xml($file)
  28. {
  29. $xml = simplexml_load_file($file);
  30. if($xml === false) {
  31. throw new Exception("无法解析XML文件");
  32. }
  33. $this->mCategories = array();
  34. foreach($xml->children() as $xitem)
  35. {
  36. $item = array();
  37. $attrs = $xitem->attributes();
  38. $title = $attrs['title']->__toString();
  39. $pid = $attrs['id']->__toString();
  40. $cids = $attrs['cids']->__toString();
  41. $img = $attrs['img']->__toString();
  42. $item['title'] = $title;
  43. $item['id'] = $pid;
  44. $item['img'] = $img;
  45. $item['subitem'] = array();
  46. $this->add_cids($pid,$cids);
  47. foreach($xitem->children() as $xsubitem) {
  48. $subitem = array();
  49. $sattrs = $xsubitem->attributes();
  50. $title = $sattrs['title']->__toString();
  51. $sid = $sattrs['id']->__toString();
  52. $cids = $sattrs['cids']->__toString();
  53. $img = $sattrs['img']->__toString();
  54. $subitem['title'] = $title;
  55. $subitem['id'] = $sid;
  56. $subitem['img'] = $img;
  57. array_push($item['subitem'],$subitem);
  58. $this->add_cids($sid,$cids);
  59. $this->add_cids($pid,$cids);
  60. }
  61. array_push($this->mCategories,$item);
  62. }
  63. }
  64. private function add_cids($id,$cids)
  65. {
  66. if(!in_array($id,$this->mCids)) {
  67. $this->mCids[$id] = array();
  68. }
  69. $cids = explode(',',$cids);
  70. foreach($cids as $val)
  71. {
  72. $cur_cids = &$this->mCids[$id];
  73. if(!empty($val) && !in_array($val,$cur_cids)) {
  74. array_push($cur_cids,$val);
  75. }
  76. }
  77. }
  78. public function categories()
  79. {
  80. return $this->mCategories;
  81. }
  82. public function cids($id)
  83. {
  84. if(!in_array($id,$this->mCids)) {
  85. return array();
  86. } else {
  87. return $this->mCids[$id];
  88. }
  89. }
  90. }