На самом деле, очень странная ошибка. Когда я писал то же самое на PHPed, используя сессии, все нормально передавалось.
Теперь же, когда передаю через сессии Joomla, происходит непонятная ошибка. Размер массива тот же, но он пуст. при обращении к sentence выводится сообщение, что строка пуста. Выводится ни пойми что.
Array ( [0] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => group_of_replics [tags] => Array ( [0] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => PC_replic [sentence] => --------t-- --t-------- [words_of_sentence] => Array ( [0] => --------t-- [1] => --t-------- ) [emotion] => neutral [said] => false ) [1] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => PC_replic [sentence] => здравствуй робот [words_of_sentence] => Array ( [0] => здравствуй [1] => робот ) [emotion] => neutral [said] => false )
-~{}~ 10.08.10 15:07:
Вот, подробней. Коды, расположенные в двух модулях.
Первый модуль. Все работает. Загружаю для простоты в ручную. Все выводится. Bots_replics не пустой.
Можно запустить.
PHP:
<?php
class PC_replic{
var $sentence="nothing";
var$words_of_sentence = array();
var $emotion="0";
var$said;
}
class group_of_replics{
var$tags=array(PC_replic);//vector<PC_replic>
var$answers=array(PC_replic);//vector<PC_replic>
}
$bots_replics=array($group_of_replics);//
$answer1=new PC_replic();//
$answer1->sentence="Предложение ответа.";//
$answer1->said=false;//
$answer1->emotion="ноль эмоций";//
$tag1=new PC_replic();//
$tag1->sentence="Предложение тега";//
$tag1->said=false;//
$tag1->emotion="ноль эмоций.";//
$tags1=array(PC_replic);
$answers1=array(PC_replic);
echo "<p>tag1:";echo $tag1->sentence;
echo "<p>answer1:";echo $answer1->sentence;
$tags1[0]=$tag1;//
$answers1[0]=$answer1;//
echo "<p>tags1[0]:";
echo $tags1[0]->sentence;
echo "<p>answers1[0]:";
echo $answers1[0]->sentence,"<p>";
$group_of_replics1=new group_of_replics();//
$group_of_replics1->answers=$answers1;
$group_of_replics1->tags=$tags1;
echo "Выводим содержимое классов:<p>";
echo "group_of_replics1 tags:";
echo $group_of_replics1->tags[0]->sentence,"<p>";
echo "group_of_replics1 answers:";
echo $group_of_replics1->answers[0]->sentence;
$bots_replics[0]=$group_of_replics1;
echo "<p>bots_replics[0]->tags=",$bots_replics[0]->tags[0]->sentence;
$session =& JFactory::getSession();
$session->set( 'myvar', $bots_replics);
?>
А вот второй модуль. В PHPed все работает, но в Joomla происходит что-то не так.
Выводятся непонятные строки. Обратите внимание, код:
echo "<p>bots_replics[0]->tags=",$bots_replics[0]->tags[0]->sentence;
и в первом, и во втором случае одинаков, но только во втором ничего не выводится.
PHP:
<?php
class PC_replic{
var $sentence="nothing";
var $words_of_sentence = array();
var $emotion="0";
var $said;
}
class group_of_replics{
var $tags=array(PC_replic);//vector<PC_replic>
var $answers=array(PC_replic);//vector<PC_replic>
}
$bots_replics=array($group_of_replics);
$session =& JFactory::getSession();
$bots_replics=$session->get( 'myvar' );
echo "<p>bots_replics[0]->tags=",$bots_replics[0]->tags[0]->sentence;
print_r($bots_replics);
?>
-~{}~ 10.08.10 15:44:
Более того, я сейчас поэкспериментировал, любой мой, пользовательский тип данных, отказывается нормально передаваться. А в PHPed все работало. Смотрю интернет, а там, все что связано с сессиями - это идиотские вопросы о том, как продлить админскую сессию в joomla. И все.
-~{}~ 10.08.10 15:56:
Проблема, как я понял, в том, что после сериализации это уже не объект класса bots_replics, а класса __PHP_Incomplete_Class и соответственно методы/данные bots_replics не доступны
-~{}~ 10.08.10 16:02:
Товарищи, я конечно нашел рабоче-крестьянское решение - классу написать методы загрузки/ выгрузки данных из/в сессию. Это будет сложновато и загрузит программу лишними действиями.
Но. В PHPed то все работало! И в сессиях сохранялись все мои объекты!Неужели Joomla ущербна?