А ты пробовал вообще перевести, то что написано в ошибке?) --- Добавлено --- И если да, то что ты знаешь о св-вах и методах класса ? И что такое public, protected и private ? Если ты этого не знаешь то тебе вперёд в самые азы ООП --- Добавлено --- Тебе надо бы изучить области видимости классов: http://secure.php.net/manual/ru/language.oop5.visibility.php
Разрабатываю проект, и задаю вопросы на форуме если не могу разобраться в том что разрабатываю) Вот так и учу!
PHP: <?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) { foreach($arr_obj as $key => $value) { echo "$key => $value<br>"; } } public $publ_var; private $priv_var; } // Объект $obj = new cls(12, 147); // Возвращаем вызов метода __set_state() $str = var_export($obj, true); // Из-за ошибки реализации приходится // удалять последнюю запятую самостоятельно $str = preg_replace("|,[\s]*\)|is", ")", $str); // Вызываем метод __set_state() eval($str.';'); ?> 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
--- Добавлено --- private function _toString() private function _get($index) вообще поидее должен быть public , но в книге private
Книжка какая-то устаревшая. В нотисе вся инфа есть. Вообще, странное трюкачество в коде - вот так создавать классы. Есть же serialize и прочее.
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:clsrivate] => 147 ) PHP: <?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>"; ?>
Почему бы вам еще раз не перечитать внимательно про магические методы? Два ваших последних вопроса просто просятся туда.
куда ты в классы то полез?)) если для тебя банальный syntax error - повод пойти на форум, то про ООП надо забыть на ближайший год как минимум)
@ubunta2, ну в книге, кстати, два подчёркивания Это ты одно набрал. Видно же, чёрточка длинная получилась, а у тебя короткое На будущее - все магические методы с двумя подчёркиваниями. На счёт делать магию приватной - не пробовал, и первый раз вижу. Могет и будет работать....
поделись же с нами. Я даже схожу за пачечкой салфеток - вдруг тоже восторг наступит. --- Добавлено --- Четыре темы на одни и те же ошибки при работе с одним и тем же листингом - действительно НЕ требуют создания четырех отдельных тредов на форуме. Сколько баллов наказания тебе накинуть?
@ubunta2 эм... Четыре темы это не начал сам понимать и исправлять. Впрочем, ты уже после размещения вроде одуплил что к чему. Это конечно прогресс. Но ты поторопился разместить четыре темы на форуме. Однотипные. Понимаешь? Хотя, если для тебя это повод для восторга, то мы за тебя рады. Искренне!