Всем привет.Появилась ошибка: Catchable fatal error: Object of class index could not be converted to string in D:\home\t.ru\www\index.php on line 76 index.php Код (PHP): <?php header('Content-Type: text/html; charset=utf-8'); session_start(); $dir_name = str_replace('\\','/', dirname(__FILE__)); define('ROOT', $dir_name); require_once '/engine/config.php'; require_once ROOT.'/engine/classes/core.class.php'; if (defined('MODE')) { switch (MODE) { case 'development': error_reporting(E_ALL); $time = microtime(); break; case 'testing': case 'production': error_reporting(0); break; default: exit('The application environment is not set correctly.'); } } try{ if(isset($_GET['admin'])){ require_once ROOT.'/engine/classes/admin/core.class.php'; //if(isset($_SESSION['login'])){ $get = $_GET['admin']; $acp = ROOT.'/engine/classes/admin/'.$get.'.class.php'; if(file_exists($acp)){ require_once $acp; $view = new $get; $view = $view->getBodyA(); echo $view; }else{ $_GET['admin'] = "index"; } //}else{ //} }elseif(isset($_GET['option'])){ $get = $_GET['option']; $path = $classes_path.$get.'.class.php'; if(file_exists($path)){ require_once $path; if(class_exists($get)){ $view = new $get; $view = $view->getBody(); echo $view; }else{ $_GET['option'] = "index"; } }else{ $option = "index"; } }elseif(isset($_GET['page'])){ $get = $_GET['page']; $spage = $mysqli->query("SELECT title,value,name FROM pages WHERE name = '$get'"); require_once ROOT.'/engine/classes/admin/core.class.php'; require_once ROOT.'/engine/classes/pages/index.class.php'; $rows = $spage->fetch_assoc(); if($spage->num_rows > 0){ $view = new index; $view->getBodyP(); echo $view; }else{ echo "no!"; } }else{ $path = $classes_path.'index.class.php'; require_once $path; $view = new index; $view = $view->getBody(); echo $view; } }catch(Exception $e){ echo $e->getMessage(); } $time2 = microtime(); list($sm, $ss) = explode(' ', $time); list($em, $es) = explode(' ', $time2); echo number_format(($em + $es) - ($sm + $ss), 3); ?> getBodyP() Код (PHP): public function getBodyP() { $tmp_url = ROOT.'/engine/templates/'.TMP_NAME.'/main.tpl'; if(file_exists($tmp_url)){ $tmp = file_get_contents($tmp_url); $tmp = $this ->ReplaceString($tmp); $tmp = $this ->ReplaceString($tmp); $tmp = $this ->ReplaceStringTitle($tmp); $tmp = $this ->ReplaceStringSN($tmp); $tmp = $this ->ReplaceStringContent($tmp); $tmp = $this ->ReplaceStringRoot($tmp); $tmp = $this ->ReplaceStringlogged($tmp); $tmp = $this ->ReplaceStringLogin($tmp); $tmp = $this->ReplaceStringMenu($tmp); return $tmp; //file_put_contents($save, $tmp); //require_once $save; //unlink($save); }else{ throw new Exception("Шаблон не найден или не существует"); } PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Исправьте. Либо в этом месте не должно быть объекта, либо его класс должен содержать метод __toString, который должен возвращать строковое представление объекта
А как сделать что бы небыло объекта? Я похоже что то сделал не так с методом __toString index.php Код (PHP): $view = new index; $view->getBodyP(); $view->__toString($view); echo $view; core Код (PHP): public function getBodyP() { $tmp_url = ROOT.'/engine/templates/'.TMP_NAME.'/main.tpl'; if(file_exists($tmp_url)){ $tmp = file_get_contents($tmp_url); $tmp = $this ->ReplaceString($tmp); $tmp = $this ->ReplaceString($tmp); $tmp = $this ->ReplaceStringTitle($tmp); $tmp = $this ->ReplaceStringSN($tmp); $tmp = $this ->ReplaceStringContent($tmp); $tmp = $this ->ReplaceStringRoot($tmp); $tmp = $this ->ReplaceStringlogged($tmp); $tmp = $this ->ReplaceStringLogin($tmp); $tmp = $this ->ReplaceStringMenu($tmp); return $tmp; //file_put_contents($save, $tmp); //require_once $save; //unlink($save); }else{ throw new Exception("Шаблон не найден или не существует"); } } public function __toString($data) { return $this->$data; } PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Ага. Ссылочку почитайте. А вообще, если вы такую фигню пишите, и не понимаете, где ошиблись, то вам рано ООП. Почитайте про функции, что-ли...
Да, что-то пошло не так. Автор, кури: Мало просто написать __toString, нужно еще самому реализацию написать, да. Это если при присвоении строковой переменной ожидается какое-то конкретное значение из объекта. Если же целиком объект в строку упаковать надо, то вам нужен serialize. В коде вашем копаться лень, в трех словах опишите, что там происходить должно по-вашему?
И к тому же, в этой строке ошибка: Код (PHP): return $this->$data; При обращении к свойствам объекта знак $ является ошибкой. (не путать с обращением к статическим свойствам и константам классов) Так же хочу добавить, что в методе __toString нельзя выбрасывать исключения, ошибки становятся фатальными.