Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

[PHP] Non-static method should not be called statically

Zdecydowałeś się na tworzenie interaktywnych stron przy pomocy PHP? Chcesz w łatwy i szybki sposób zarządzać danymi na swojej stronie? Tutaj znajdziesz pomoc w napotkanych przy tym trudnościach.

[PHP] Non-static method should not be called statically

Post 24.11.2017, 12:48:57

Czołem,
Mam zapożyczony skądś kod klasy do podmiany języka. Po reinstalacji php strona zaczęła mi sypać warningami:

Strict Standards: Non-static method Lang::instance() should not be called statically in C:\WebServ\httpd\classes\lang.class.php on line 62
Strict Standards: Non-static method Lang::instance() should not be called statically in C:\WebServ\httpd\classes\lang.class.php on line 61

Trzeba z tego co rozumiem zmienić odwołanie do metody ze statycznej na "niestatyczną". Ale nie mam pojęcia jak to zrobić :/
W wierszach 61 i 62 odwołanie wydaje mi się dynamiczne...

Chodzi o dokładnie te dwa wiersze:
Kod: Zaznacz cały
{
  if(isset(self::instance()->lines[$name]))
    return vsprintf(self::instance()->lines[$name], $params);

  return FALSE;
}

Poniżej cały kod.
V.

Kod: Zaznacz cały
<?PHP
error_reporting(E_ALL | E_STRICT);
class Lang
{
  private $languages = array('pl' => 'Polski', 'en' => 'English', 'rus' => 'Русский');
  private $current_language = FALSE;
  private $lines = array();

  private static $instance = FALSE;
 
public function __construct()
{
  $this->set_language();
}

public function instance()
{
  if(self::$instance == FALSE)
  {
    self::$instance = new Lang;
  }

  return self::$instance;
}

private function set_language()
{
  if(isset($_GET['lang']) AND array_key_exists(($lang = strtolower($_GET['lang'])), $this->languages))
  {
    $this->current_language = $lang;
    $_SESSION['site_lang'] = $lang;
  }
  elseif(isset($_SESSION['site_lang']) AND array_key_exists(($lang = strtolower($_SESSION['site_lang'])), $this->languages))
  {
    $this->current_language = $lang;
  }
  else
  {
    $this->current_language = $this->default_language();
  }

  $this->load_lang_file();
}

private function default_language()
{
  return current(array_keys($this->languages));
}

private function load_lang_file()
{
  if(file_exists('langs/'.$this->current_language.'.php'))
  {
    include 'langs/'.$this->current_language.'.php';
    $this->lines = $lang;
  }
}

public static function line($name = FALSE, $params = array())
{
  if(isset(self::instance()->lines[$name]))
    return vsprintf(self::instance()->lines[$name], $params);

  return FALSE;
}

public static function get_language()
{
  return self::instance()->current_language;
}

public static function get_languages()
{
  return self::instance()->languages;
}

}
?>
Vytt
Posty: 85
Dołączył(a): 28.01.2005

Re: [PHP] Non-static method should not be called statically

Post 24.11.2017, 13:16:30

public function instance() powinna być statyczna, a nie jest.
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19664
Dołączył(a): 14.04.2002

Re: [PHP] Non-static method should not be called statically

Post 24.11.2017, 13:25:27

Jakie to proste, prawda? ;)
Wielkie dzięki!
V.
Vytt
Posty: 85
Dołączył(a): 28.01.2005


Powrót do PHP i bazy danych


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google Adsense [Bot] i 4 gości

Hosting, Domeny, SSL

Subskrypcja

Mamy 50864 zarejestrowanych użytkowników.
Najnowszy użytkownik: paulinaka


Nasi użytkownicy napisali:

  • 936286 wiadomości
  • w 246804 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)