|
|
|
|
|
для: aaanet
(11.09.2011 в 23:21)
| | Нет, не подойдет. В таком случае проще завести статическую переменную с флагом модификации, чтобы каждый объект мог изменять ее. | |
|
|
|
|
|
|
|
для: MHz
(11.09.2011 в 00:39)
| | Изменение данных - понятие растяжимое.
Может измениться часть строки, а может измениться количество чего либо.
Мне кажется Вам просто нужен синглтон, через который будут работать все остальные методы.
func s($method, $var)
{
static $data[$method] = array();
if ($data[$method] == null) return class -> $method($var);
else return $data[$method];
}
Cxbnfnm d ytv dspjds b ,skb kb jyb djj,ot yt cjcnfdkztn ghj,ktvs | |
|
|
|
|
|
|
|
для: cheops
(11.09.2011 в 19:47)
| | По сравнению с начальным состоянием, а начальное состояние будет устанавливаться через конструктор. Вот, на счет отследить изменения в новом классе, не знаю как организовать. Добавление ветвей будет только в самом классе.
Т.е. я себе представляю примерно так буду работать с классом:
<?php
class MyClass extends RecursiveArrayAccess
{
public function __construct ()
{
// получение данных
parent::__construct (массивы данных);
}
public function __destruct ()
{
// если были изменения, записать их в файл
parent::toArray();
}
}
?>
|
| |
|
|
|
|
|
|
|
для: MHz
(11.09.2011 в 17:12)
| | А изменилось по сравнению с чем, с каким состоянием? И нельзя ли в этом новом классе отследить изменения? Или добавление новых ветвей будет происходить в обход класса? | |
|
|
|
|
|
|
|
для: cheops
(11.09.2011 в 15:11)
| | От этого класса будут наследоваться другие классы, использующие этот для хранения информации и более удобного обращения к ней. И вот в одном из таких классов мне нужно в деструкторе проверить изменилось ли что нибудь и если изменилось записать изменения в файл. | |
|
|
|
|
|
|
|
для: MHz
(11.09.2011 в 13:27)
| | Опишите зачем ему это знать и для каких целей? Просто довольно сложно предложить решение, так как непонятно, как это должно выглядеть и при каких обстоятельствах... У меня сложилось мнение, что для того, чтобы нарастить дерево, все-равно придется изменять объекты (дополнять их вложенными). И как бы изменения настали, или есть какие-то эталлонные структуры, для которых нужно отслеживать изменения. В общем хотелось бы услышать больше подробностей о конечной задаче? | |
|
|
|
|
|
|
|
для: cheops
(11.09.2011 в 13:14)
| | Так я смогу узнать изменялись ли данные в каком либо определенном объекте, а мне нужно узнать это именно от одного, родительского объекта. Он должен знать о модификация всех вложенных объектов. У меня была мысль сделать флаг статическим, чтобы все объекты могли обращаться к нему, но мне кажется это будет не совсем верно. | |
|
|
|
|
|
|
|
для: cheops
(11.09.2011 в 13:14)
| | старый добрый "флаг" | |
|
|
|
|
|
|
|
для: MHz
(11.09.2011 в 13:08)
| | Введите член класса $this->is_change, присвойте по умолчанию его значение равным false (в конструкторе). А при вызовах offsetSet() или offsetUnset() изменяйте его значение на true. Создайте метод is_change() и возвращайте при его вызове значение $this->is_change. Это позволит для каждого объекта (содержащего другие такие объекты или являющимися вложенными) узнать осуществлялись ли манипуляции при помощи offsetSet() или offsetUnset(). | |
|
|
|
|
|
|
|
для: MHz
(11.09.2011 в 13:04)
| | Т.е. в массиве $this->Data, помимо всего прочего может содержать еще несколько объектов этого же класса, вот как бы узнать были ли изменены данные во всех объектах.
Изменением данных можно считать вызов функций offsetSet() или offsetUnset() | |
|
|
|
|