Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
grizmang
-8 / 1 / 0
Регистрация: 21.01.2018
Сообщений: 80
#1

Исправить Deprecated: Non-static method cls::__set_state() should not be called statically

05.02.2018, 15:56. Просмотров 169. Ответов 3
Метки нет (Все метки)

Deprecated: Non-static method cls::__set_state() should not be called statically in E:\OpenServer\domains\php\01\1.18\4.php(42) : eval()'d code on line 1

Код
cls Object
(
    [publ_var] => 12
    [priv_var:cls:private] => 147
)
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
 
  error_reporting(E_ALL & ~E_NOTICE);
 
  // Класс
  class cls
  {
    public function __construct($var, $val)
    {
      $this->publ_var = $var;
      $this->priv_var = $val;
    }
    public function __set_state($arr_obj)
    {
      return new cls($arr_obj['publ_var'], $arr_obj['priv_var']);
    }
    public  $publ_var;
    private $priv_var;
  }
  // Объект
  $obj = new cls(12, 147);
 
  // Возвращаем вызов метода __set_state()
  $str = var_export($obj, true);
 
  // Из-за ошибки реализации приходится 
  // удалять последнюю запятую самостоятельно
  $str = preg_replace("|,[\s]*\)|is", ")", $str);
 
  // Создаем объект $new_obj - копию
  // объекта $obj
  eval('$new_obj = '.$str.';');
 
  // Выводим дамп нового объекта $new_obj
  echo "<pre>";
  print_r($new_obj);
  echo "</pre>";
?>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2018, 15:56
Ответы с готовыми решениями:

как исправить ошибку Warning: The magic method __toString() must have public visibility and cannot be static
&lt;?php error_reporting(E_ALL &amp; ~E_NOTICE); class employee { ...

Non-static method DB::__construct() cannot be called statically
Добрый день!Как избавиться от этой ошибки. класс который унаследует ...

Non-static method nggGallery
Всем доброго времени суток! Ищу помощи... вверху сайта, в админке -...

Как исправить ошибку Deprecated: mktime()
Выдает вот такую ошибку Deprecated: mktime(): The is_dst parameter is...

Non-static method cannot be called statically - как разрулить ситуацию?
Всем привет! Имеется класс для работы с PDO. И имеется вот такая функция: ...

3
andr-xw
121 / 76 / 32
Регистрация: 05.03.2013
Сообщений: 447
05.02.2018, 21:10 #2
http://php.net/manual/ru/language.oop5.magic.php#object.set-state

Метод должен быть статическим.
0
grizmang
-8 / 1 / 0
Регистрация: 21.01.2018
Сообщений: 80
05.02.2018, 21:58  [ТС] #3
так в книге так написано
0
Jewbacabra
Эксперт PHP
3372 / 2811 / 1267
Регистрация: 24.04.2014
Сообщений: 8,516
05.02.2018, 22:12 #4
Цитата Сообщение от grizmang Посмотреть сообщение
так в книге так написано
Значит книга или очень старая или крайне сомнительного качества. Или и то и другое одновременно, что наиболее вероятно.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2018, 22:12

Как исправить: Strict standards: Non-static method YaMailClass::getInstance() should not be called statically in
Вот ошибка: Strict standards: Non-static method YaMailClass::getInstance()...

Non-static method Letter::types() should not be called statically, assuming $this from incompatible context
Пытаюсь зайти в редактор шаблонов, в скрипте и выдает вот такую вот ошибку: &quot;...

Как исправить Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callbac
вот такая вот ошибка, не подскажите, как исправить её? Deprecated:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru