[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как объединить два объекта
Страницы: 1, 2, 3
Ice
$forum[0]->part[0]

Как-то так, но я такой логики еще не встречал.

_____________
Пишите код, исходя из того, что все программисты, которые будут сопровождать вашу программу, — склонные к насилию психопаты, знающие, где вы живёте.
Guest
vasa_c
$forum1 - объект
$forum2 - объект

напиши пожалуйста эти пару строчек, которые объединят все атрибуты этих объектов, так, чтобы одинаковые не повторялись
vasa_c
приведите список примерных атрибутов и то, что вы желаете получить в конце

_____________
Блог ГО | Таблица символов Юникода | Графомания
Guest
vasa_c
class simpleForum
{
function set_part($title)
{
$this->part[]=$title;
}
function set_cat($title, $part)
{
$this->cat[]=$title;

}
}
$forum1=new simpleForum();
$forum1->set_part("general");

$forum2=new simpleForum();
$forum2->set_cat("Обсуждение сайта", "general");

вот объекты после сериализации
$forum1:

O:11:"simpleForum":1:{s:4:"part";a:1:{i:0;s:7:"general";}}

$forum2:

O:11:"simpleForum":1:{s:3:"cat";a:1:{i:0;s:16:"Обсуждение сайта";}}

нужно получить

O:11:"simpleForum":2:{s:4:"part";a:1:{i:0;s:7:"general";}s:3:"cat";a:1:{i:0;s:16:"Обсуждение сайта";}}


Guest
vasa_c
class simpleForum
{
function set_part($title)
{
$this->part[]=$title;
}
function set_cat($title, $part)
{
$this->cat[]=$title;

}
}

$forum1=new simpleForum();
$forum1->set_part("general");

$forum2=new simpleForum();
$forum2->set_cat("Обсуждение сайта", "general");


вот объекты после сериализации
$forum1:

O:11:"simpleForum":1:{s:4:"part";a:1:{i:0;s:7:"general";}}

$forum2:

O:11:"simpleForum":1:{s:3:"cat";a:1:{i:0;s:16:"Обсуждение сайта";}}

нужно получить

O:11:"simpleForum":2:{s:4:"part";a:1:{i:0;s:7:"general";}s:3:"cat";a:1:{i:0;s:16:"Обсуждение сайта";}}
vasa_c
я не интерпретатор, чтобы читать сериализованные данные

объявить все атрибуты изначально явно и сделать метод для их сливания (можно статический):

class simpleForum {

private $part = array(), $cat = array();

public static function merge($one, $two) {
$result = new simpleForum();
$result->set_part(array_merge($one->part, $two->part));
$result->set_cat(array_merge($one->cat, $two->cat));
return $result;
}

}


$forum3 = simpleForum::merge($forum1, $forum2);


Либо попробовать сформулировать изначальную задачу, тогда может быть решим, как её можно реализовать без подобного говнокода.

_____________
Блог ГО | Таблица символов Юникода | Графомания
Guest
vasa_c
хорошо, сначала так сначала.
Задача такая: создать объект, который должен храниться для дальнейшего его использования. Вот, например, добавил я раздел в форум - создался объект, содержащий этот факт, потом где-нибудь в другом месте(скрипте) еще что-то добавил к этому объекту и.т.д.

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

но вот встал вопрос, а что, если мне нужен один раздел - какой-то основной, который в дальнейшем не надо трогать(удалять и.т.д). я хочу его написать в начале скритпа, чтобы он(его атрибуты) добавился к хранимому объекту, а после выполнения скрипта все атрибуты этой операции исчезли из объекта.

ну вот как это сделать?
Guest
сейчас напишу то что я пока что сделал
vasa_c
Вы по-прежнему описываете всё очень скомкано и туманно (например, что значит "написать раздел вначале скрипта"?, какой операции атрибуты должны исчезнуть из объекта?).
Скорее всего, это потому, что вы сами смутно представляете, что вы хотите со всем этим сделать.

Данные надо хранить в структурированной базе данных, а не в сериализующихся и непонятно как меняющихся объектах.
Попробуйте перейти на базу и проблем значительно поубавится.

_____________
Блог ГО | Таблица символов Юникода | Графомания
Guest
vasa_c
я то понимаю что мне нужно.
вот допустим вы создали объект в одном скрипте, по ходу скрипта он изменился, и теперь этот изменившийся объект вам нужно использовать в другом скрипте. как вы будете это делать?

vasa_c
По моему скромному ИМХУ объект, это единица отдельного процесса, он не должен передавться между разными процессами, передаваться должны данные, а уже над ними строится объекты.

Впрочем, ничего не мешает передавать и объект - сериализовать, сохранить, потом достать и десериализовать. Как я понял, вы так и делаете.

А вот "слить атрибуты", "атрибуты операции исчезли из объекта", "написать раздел вначале скрипта", извините, сложно для понимания.

_____________
Блог ГО | Таблица символов Юникода | Графомания
Guest
vasa_c
)) ну я человек такой, в голове много мыслей, а объяснить все сложно)
Guest
//'njn j,]ета строчку инклудим во все скрипты
$objects=new objects($_SERVER['DOCUMENT_ROOT']."/objects/");

..
это сам класс
class objects
{
private $root;

public function __construct ($root)
{
$this->root = $root;
}
public function get_obj($name,$mode="")
{
$get=explode("(",$name, 2);
if(count($get)>0)
{
$name=$get[0];
$params=substr($get[1],0,strlen($get[1])-1);
}

if (isset($this->obj[$name]))
{
$obj=$this->obj[$name];

$obj=unserialize($obj);
return $obj;
}
else
{
if(is_file($this->root.$name.".pobj"))
{
$obj=file_get_contents($this->root.$name.".pobj");
$obj=unserialize($obj);
}
else
$obj=new $name($params);

return $obj;
}

}

public function set_obj($name, $obj, $mode="")
{
$obj=serialize($obj);
$this->obj[$name]=$obj;
}
public function save_obj($name)
{
if(isset($this->obj[$name]))
{
$file=$this->root.$name.".pobj";
@$f = fopen($file, "w+");
@fwrite($f, $this->obj[$name]);
fclose($f);
}
}

}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.