2017-02-22 8 views
0

PHPのクラスと関数に問題があります。PHPクラスと関数return

私のクラスファイルは次のとおりです。

<?php 
class EF_IP{ 

public function ip_adresa(){ 

    // dobivanje IP adrese 
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) { 
     $ip = $_SERVER['HTTP_CLIENT_IP']; 
     return $ip; 
     } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
      $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
      return $ip; 
       } else { 
        $ip = $_SERVER['REMOTE_ADDR']; 
        return $ip; 
     } 
    } 
} 
?> 

と私は他のPHPファイルから呼び出す:

EF_IP::ip_adresa(); 
echo $ip; 

と私はエラーを取得:

Strict Standards: Non-static method EF_IP::ip_adresa() should not be called statically 

私がする必要がありますか?

+1

'public function'を' public static function'に変更しました。 –

答えて

2

あなたは、あなたの関数が静的にするか、最初のクラスをインスタンス化することができ、次のいずれか

class MyClass { 
    public static function SomeFunction() {} 
    public function someOtherFunction() {} 
} 

次に、どちらかを呼び出します。

MyClass::SomeFunction() 
$class = new MyClass(); 
$class->someOtherFunction(); 
1

ない静的にあなたの関数を呼び出します。

$ef_ip = new EF_IP(); 
$ip = $ef_ip->ip_adresa(); 
echo $ip; 

か、あなたの関数が静的にするに:

public static function ip_adresa(){ 
// your code 
}