За последние 24 часа нас посетили 57948 программистов и 1695 роботов. Сейчас ищут 892 программиста ...

Превозмогания тред

Тема в разделе "PHP для новичков", создана пользователем ubunta2, 27 июн 2017.

  1. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    А ты пробовал вообще перевести, то что написано в ошибке?)
    --- Добавлено ---
    И если да, то что ты знаешь о св-вах и методах класса ?
    И что такое public, protected и private ? Если ты этого не знаешь то тебе вперёд в самые азы ООП ;)
    --- Добавлено ---
    Тебе надо бы изучить области видимости классов:
    http://secure.php.net/manual/ru/language.oop5.visibility.php
     
  2. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    пробовал перевести и тогда я понял где ошибка
    --- Добавлено ---
    я уже нашел
     
  3. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    молодец! Так где чего нашёл? И что за ошибка то у тебя была?
     
  4. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    нужно было убрать одно подчеркивание
    private function _toString()
    private function _get($index)
     
  5. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Разрабатываю проект, и задаю вопросы на форуме если не могу разобраться в том что разрабатываю)
    Вот так и учу!
     
  6. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    PHP:
    1. <?php
    2.  
    3.   error_reporting(E_ALL & ~E_NOTICE);
    4.  
    5.   // Класс
    6.   class cls
    7.   {
    8.   public function __construct($var, $val)
    9.   {
    10.   $this->publ_var = $var;
    11.   $this->priv_var = $val;
    12.   }
    13.   public function __set_state($arr_obj)
    14.   {
    15.   foreach($arr_obj as $key => $value)
    16.   {
    17.   echo "$key => $value<br>";
    18.   }
    19.   }
    20.   public  $publ_var;
    21.   private $priv_var;
    22.   }
    23.   // Объект
    24.   $obj = new cls(12, 147);
    25.  
    26.   // Возвращаем вызов метода __set_state()
    27.   $str = var_export($obj, true);
    28.  
    29.   // Из-за ошибки реализации приходится
    30.   // удалять последнюю запятую самостоятельно
    31.   $str = preg_replace("|,[\s]*\)|is", ")", $str);
    32.  
    33.   // Вызываем метод __set_state()
    34.   eval($str.';');
    35. ?>
    Deprecated: Non-static method cls::__set_state() should not be called statically in E:\OpenServer\domains\php\01\1.18\3.php(34) : eval()'d code on line 1
    publ_var => 12
    priv_var => 147
     
  7. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    --- Добавлено ---
    private function _toString()
    private function _get($index)
    вообще поидее должен быть public , но в книге private
     
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Книжка какая-то устаревшая. В нотисе вся инфа есть. Вообще, странное трюкачество в коде - вот так создавать классы. Есть же serialize и прочее.
     
  9. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    А что за книга? И что там про этот код написано?
     
  10. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
  11. ubunta2

    ubunta2 Зэк
    [ БАН ]

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

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    я изучаю что нашел
     
  13. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Почему бы вам еще раз не перечитать внимательно про магические методы? Два ваших последних вопроса просто просятся туда.
     
  14. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    здесь другая вроде из-за того что в 7 версии такой функции нет
    вроде так
     
  15. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    куда ты в классы то полез?))
    если для тебя банальный syntax error - повод пойти на форум, то про ООП надо забыть на ближайший год как минимум)
     
  16. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    4 темы с названием как исправить ошибку XD @Ganzal будет в восторге :)
     
  17. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    все в восторге) просто не все пишут)
     
  18. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    я в восторге от другого
     
  19. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.816
    Симпатии:
    1.332
    Адрес:
    Лень
    оба плохи
     
  20. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    @ubunta2, ну в книге, кстати, два подчёркивания :) Это ты одно набрал. Видно же, чёрточка длинная получилась, а у тебя короткое :) На будущее - все магические методы с двумя подчёркиваниями. На счёт делать магию приватной - не пробовал, и первый раз вижу. Могет и будет работать....
     
  21. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    поделись же с нами. Я даже схожу за пачечкой салфеток - вдруг тоже восторг наступит.
    --- Добавлено ---
    Четыре темы на одни и те же ошибки при работе с одним и тем же листингом - действительно НЕ требуют создания четырех отдельных тредов на форуме. Сколько баллов наказания тебе накинуть?
     
  22. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    ]
    в восторге от того, что начал понимать и исправлять сам ошибки
     
  23. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @ubunta2 эм... Четыре темы это не начал сам понимать и исправлять. Впрочем, ты уже после размещения вроде одуплил что к чему. Это конечно прогресс. Но ты поторопился разместить четыре темы на форуме. Однотипные. Понимаешь? Хотя, если для тебя это повод для восторга, то мы за тебя рады. Искренне!
     
  24. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    @ubunta2 почитай Котерова
     
  25. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @Dimon2x он его уже прочитал :p