Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> доступ к объекту класса 
:(
    Опции темы
supercelt
Дата 19.4.2009, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



Здравствуйте, у меня такая загвоздка. Есть файл с классом:

Код

<?php
#=========================CMS S-01 [s01_class.php]=====================================
#====================================================================================
class s01_language
{

 function get_language()
 {
 global $mysql_prefix;     
 $lang_select_q = 'SELECT `site_language` FROM `'.$mysql_prefix.'settings` LIMIT 1;';
 $lang_select = mysql_query($lang_select_q);
   if(!mysql_num_rows($lang_select))
   {
   echo 'Error! No language settings!';
   exit;
   }
   else
   {
   $language_ = mysql_fetch_array($lang_select);
   $lang_ = $language_['site_language'];
   return $lang_;
   }
 }

}
?>


Есть второй файл:

Код

<?php
session_start();
require_once('../cms_s01_class/s01_class_language.php');
$lang = new s01_language;

if(!isset($_SESSION['lang'])) //Узнаём какой язык на сайте
{
$language = $lang->get_language();
$_SESSION['lang'] = $language;
}
else
{
$language = $_SESSION['lang'];
}

.....

echo $language;
echo $_SESSION['lang'];


Фишка в том, что когда сессии ещё нет, то всё нормально выводит - russian, а когда сессия записалась, браузер пишет такую ошибку:
 
Catchable fatal error: Object of class s01_language could not be converted to string in Z:\home\testcms.com\www\cms_s01_admin\s01_admin_top.php on line 26

PM   Вверх
Kirsan
Дата 19.4.2009, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 4.11.2008
Где: г.Волжский, Волго градская обл.

Репутация: 1
Всего: 1



Судя по тексту ошибки, вы пытаетесь с объектом работать как со строкой. Что есть 26 строка файла s01_admin_top.php?
PM ICQ   Вверх
supercelt
Дата 19.4.2009, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



Это когда выводишь просто оператором эхо -  echo $_SESSION['lang'];
PM   Вверх
Kirsan
Дата 20.4.2009, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 4.11.2008
Где: г.Волжский, Волго градская обл.

Репутация: 1
Всего: 1



А во втором файле больше нигде не используется код вроде того, что ниже?
Код

$_SESSION['lang'] = /*что-нибудь*/

Если нет, то 
Код

print_r($language);

после строки
Код

$language = $lang->get_language();

и искать, где появляется неверное значение.
PM ICQ   Вверх
supercelt
Дата 20.4.2009, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



Kirsan, не, во втором файле больше ничего нет. Ок, спасибо, попробую сделать, как ты написал)
PM   Вверх
supercelt
Дата 20.4.2009, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



Kirsan, попробовал, вот что выводится в браузер: s01_language Object ( ) 
PM   Вверх
Sanchezzz
  Дата 20.4.2009, 20:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



походу кто то класс запихнул в сессию..

Это сообщение отредактировал(а) Sanchezzz - 20.4.2009, 20:56


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Kirsan
Дата 20.4.2009, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 4.11.2008
Где: г.Волжский, Волго градская обл.

Репутация: 1
Всего: 1



Sanchezzz, так-то оно так, но выходит, что объект возвращает метод s01_language->get_language() (если топикстартер print_r() в том месте воткнул). А я смотрю на реализацию этого метода (первый листинг) и не понимаю, как этот метод может объект вернуть. Может кто-то из гуру увидит? smile
PM ICQ   Вверх
SneG0K
Дата 20.4.2009, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



Kirsan, я честно говоря тоже как-то не сильно понимаю, точнее вообще не понимаю откуда там берется объект...

Кажется мне, что проблема в другом месте.
supercelt, выложи весь код...

Добавлено через 1 минуту и 21 секунду
Цитата(supercelt @  19.4.2009,  21:29 Найти цитируемый пост)
 function get_language()

Попробуй возвращать результат в конце функции, а не в if-е

Добавлено через 6 минут и 35 секунд
Это только я заметил, что там неправильная подсветка комментария в первом листинге?
PM WWW Skype   Вверх
bars80080
Дата 21.4.2009, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(SneG0K @  20.4.2009,  23:36 Найти цитируемый пост)
Это только я заметил, что там неправильная подсветка комментария в первом листинге? 

нет, но смотрится забавно. я б кстати вообще комментарии отражал был оранжевым цветом (целиком конечно)
PM MAIL WWW   Вверх
supercelt
Дата 21.4.2009, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



SneG0K, вот весь код. Сначала файл с классом
Код

<?php
#=========================CMS S-01 [s01_class.php]=====================================
#====================================================================================
class s01_language
{

 function get_languages($lan_dir)
 {
 $lan_files='';
 $lan=opendir($lan_dir);
  while($dir=readdir($lan))
  {
   if(is_dir($dir)==false)
   {
   $lan_files.='<option value="'.$dir.'">'.$dir.'</option>';
   }
  } 
 return $lan_files;
 }

 function get_language()
 {
 global $mysql_prefix;     
 $lang_select_q = 'SELECT `site_language` FROM `'.$mysql_prefix.'settings` LIMIT 1;';
 $lang_select = mysql_query($lang_select_q);
   if(!mysql_num_rows($lang_select))
   {
   echo 'Error! No language settings!';
   exit;
   }
   else
   {
   $language_ = mysql_fetch_array($lang_select);
   $lang_ = $language_['site_language'];
   return $lang_;
   }
 }

}
?>


А вот второй файл второй
Код

<?php
#=========================CMS S-01 [s01_admin_top.php]===============================
#====================================================================================
error_reporting(E_ALL);
session_start();
require_once('../cms_s01_class/s01_class_language.php');
require_once('../cms_s01_class/s01_class_admin.php');
require_once('../cms_s01_class/s01_class_mysql.php');
$lang = new s01_language;
$admin = new s01_admin;
$mysql = new s01_mysql;

$admin->check_config(); //Ищем конфиг, если его нет, то система не инсталлирована!
require_once('../s01_config.php'); //Подключаем конфиг
$mysql->connect_db($mysql_server, $mysql_user, $mysql_password, $mysql_db_name);

if(!isset($_SESSION['lang'])) //Узнаём какой язык на сайте
{
$language = $lang->get_language();
$_SESSION['lang'] = $language;
}
else
{
$language = $_SESSION['lang'];
}
echo $language;
//print_r($language);
//echo $_SESSION['lang'];
echo '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="s01_admin_css.css" type="text/css" rel="stylesheet">
<title>Админцентр</title>
</head>
<body>';
?>


Потом вконце просто прилепляется футер, где хтмл документ закрывается. Суть сама в этом файле
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0572 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.