Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: По умолчанию Ошибка Cannot access empty property in . не могу понять почему
Форумы портала PHP.SU » » Объектно-ориентированное программирование » По умолчанию Ошибка Cannot access empty property in . не могу понять почему

Страниц (1): [1]
 

1. Adrenalin - 22 Декабря, 2013 - 23:16:37 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <?PHP
  4.  
  5. class checkIPRange {
  6.     public $ip;
  7.     public $country; //ISO format only
  8.  
  9.     private function LoadDB(){
  10.         $file = $this->$country."Range.xml";
  11.         if (!file_exists($file)){
  12.             echo $file." - File Base Not Found";
  13.             Exit();
  14.         }
  15.         $XmlString  = file_get_contents($file);
  16.         $xml        = simplexml_load_string($XmlString);
  17.         $json       = json_encode($xml);
  18.         $array      = json_decode($json,TRUE);
  19.         return $array;
  20.     }
  21.  
  22.     private function IPtoINT($ip){
  23.         $IntIp = str_replace(".", "", $ip);
  24.         $IntIp = (int)$IntIp;
  25.         return $IntIp;
  26.     }
  27.  
  28.     public function SearchIP(){
  29.         $exit = false;
  30.         $IntIp = $this->IPtoINT($this->$ip);
  31.         $array = $this->LoadDB();
  32.         foreach ($array  as $aString){
  33.             $RangesIP    = trim($aString['RangeIP']);
  34.             $aRangesIP   = explode(",",$RangesIP);
  35.             foreach ($aRangesIP as $RangeIP){
  36.                 $aRangeIP = explode("-",$RangeIP);
  37.                 $aRangeIP[0] = $this->IPtoINT($aRangeIP[0]);
  38.                 $aRangeIP[1] = $this->IPtoINT($aRangeIP[1]);
  39.                 if ($IntIp >= $aRangeIP[0] and $IntIp <= $aRangeIP[1]){
  40.                     $exit = true;
  41.                     break(1);
  42.                 }
  43.             }
  44.         }
  45.         if ($exit == true){
  46.             return true;
  47.         } else {
  48.             return false;
  49.         }
  50.     }
  51. }
  52.  
  53. $ObjCheck = new checkIPRange();
  54. $ObjCheck->country = 'ES';
  55. $ObjCheck->ip = '46.222.0.1';
  56. $result = $ObjCheck->SearchIP();
  57.  


Господа прошу помомщи не могу понять почему он ошибку мне показывает. Так же буду признателен за конструктивную критику моего первого OOP скрипта. До сели писал только на процедурном.
2. OrmaJever - 23 Декабря, 2013 - 00:02:21 - перейти к сообщению
$this->$country и $this->$ip замените на $this->country и $this->ip
3. Adrenalin - 23 Декабря, 2013 - 00:05:13 - перейти к сообщению
OrmaJever пишет:
$this->$country и $this->$ip замените на $this->country и $this->ip

Иван Иваныч Улыбка вот спасибо ... как же так смотрю в книгу вижу фигу. Видимо сказывается процедурное прошлое Улыбка
Спасибо!

 

Powered by ExBB FM 1.0 RC1