Mam klasę do obsługi plików XML
  1. <?
  2. class XML
  3. {
  4. var $path;
  5. var $FileName;
  6. var $Key;
  7.  
  8. function XML()
  9. {}
  10.  
  11.  function ReadDatabase()
  12.  {
  13.  
  14. $data = implode(&#092;"\",file($this->FileName));
  15. $parser = xml_parser_create();
  16. xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
  17. xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
  18. xml_parse_into_struct($parser,$data,$values,$tags);
  19. xml_parser_free($parser);
  20.  
  21. foreach ($tags as $key=>$val)
  22. {
  23. if ($key == $this->Key) {
  24. $molranges = $val;
  25. for ($i=0; $i < count($molranges); $i+=2)
  26. {
  27. $offset = $molranges[$i] + 1;
  28. $len = $molranges[$i + 1] - $offset;
  29. $tdb[] = $this->parseMol(array_slice($values, $offset, $len));
  30. }
  31. } else {
  32. continue;
  33. }
  34. }
  35. return $tdb;
  36. }
  37.  function sortdb($odb, $kol, $jak=1)
  38.  {
  39. $i=0;
  40.  if (count($odb)!=0) foreach ($odb as $d)
  41. $tdb[$i++]=$d->$kol;
  42.  
  43. if (count($tdb)>0) if ($jak==1) arsort($tdb);
  44. if (count($tdb)>0) if ($jak==2) asort($tdb);
  45. if (count($tdb)>0) $kdb = array_keys ($tdb);
  46. if (count($kdb)>0) foreach ($kdb as $k) $db[$i++]=$odb[$k];
  47. return $db;
  48.  
  49.  }
  50.  
  51.  function utagi($tag)
  52.  {
  53. $t=str_replace(&#092;"&lt;\", \"<\", $tag);
  54. $t=str_replace(&#092;"&gt;\", \">\", $t);
  55. $t=str_replace(&#092;"&amp;\", \"&\", $t);
  56. return $t;
  57.  }
  58.  
  59.  function selectmeny($kol,$co,$tryb=0)
  60.  {
  61.  $c=0;
  62.  switch ($tryb)
  63.  {
  64.  case 0:
  65.  foreach ($this->db as $d) if ($d->$kol==$co) $db2[$c++]=$d;
  66.  break;
  67.  case 1:
  68.  foreach ($this->db as $d) if ($d->$kol>$co) $db2[$c++]=$d;
  69.  break;
  70.  }
  71.  
  72.  return $db2;
  73.  }
  74.  
  75.  function selectmenydb($db, $kol,$co,$tryb=0)
  76.  {
  77.  $c=0;
  78.  switch ($tryb)
  79.  {
  80.  case 0:
  81.  foreach ($db as $d) if ($d->$kol==$co) $db2[$c++]=$d;
  82.  break;
  83.  case 1:
  84.  foreach ($db as $d) if ($d->$kol>$co) $db2[$c++]=$d;
  85.  break;
  86.  }
  87.  
  88.  return $db2;
  89.  }
  90.  
  91.  function selectone($kol,$co)
  92.  {
  93.  if (count($this->db)!=0) foreach ($this->db as $d)
  94. if ($d->$kol==$co) break; else $d=false;
  95.  else $d=false;
  96.  return $d;
  97.  }
  98.  
  99. function elem($v)
  100. {
  101. $ret='';
  102. if (($v!='')&&($v!='-')) $ret=$v;
  103. return $ret;
  104. }
  105. }
  106.  
  107. class UniR extends XML
  108. {
  109. function UniR($aa=null)
  110. {
  111. $this->XML();
  112. $this->Key=&#092;"element\";
  113. if ($aa!=null) foreach ($aa as $k=>$v) {$this->$k = $aa[$k];}
  114. }
  115. }
  116. class UniD extends UniR
  117. {
  118. var $db;
  119. function UniD($filename)
  120. {
  121. $this->UniR();
  122. $this->FileName=$filename;
  123. $this->db = $this->ReadDatabase();
  124. }
  125.  
  126. function parseMol($mvalues)
  127. {
  128. for ($i=0; $i < count($mvalues); $i++) {$mol[$mvalues[$i][&#092;"tag\"]] =$mvalues[$i][\"value\"]; }
  129. return new UniR($mol);
  130. }
  131. }
  132.  
  133. ?>


Działa to poprawnie u mnie na localhost (PHP4), podobnie na
www.skaruz.com/pb/, nie działa natomiast na www.verdox.pl/pb/ ani na pb.mentat.pl/test3/.

Pojawia się błąd
Kod
Fatal error: Cannot instantiate non-existent class: unid in /home/users/pb/public_html/test3/index.php on line 4


Linia 4 to
Kod
$daneXML = new UniD('dane/komentarze.xml');


Sądzę że jest związane z róznicami pomiędzy PHP4 a PHP5. Jak w prosty sposób to naprawić, aby działało pod obydwoma wersjami?