![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
ShamanVoodoo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 17.10.2007 Где: Сергиев Посад Репутация: -1 Всего: -3 |
упрощенный пример:
т.е. задаем(и сохраняем) атрибут через __set проблема в том, что $_var ($var) должна работать как массив, а при таком варианте возникает ошибка как реализовать подобный вариант(когда-то пробовал через ArrayObject, но не получилось) и вообще есть ли какой-то способ отлавливать вызов методов и изменение атрибутов также как и с ошибочными вариантами? |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 2 Всего: 55 |
На вид какая-то странная смесь модели и контроллера. Может в этом проблема (в неправильном подходе/архитектуре)?
Почему не сделать вот так
-------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
ShamanVoodoo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 17.10.2007 Где: Сергиев Посад Репутация: -1 Всего: -3 |
||||
|
||||
awdev |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 22.11.2009 Репутация: нет Всего: 1 |
Результат:
|
||||
|
|||||
ShamanVoodoo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 17.10.2007 Где: Сергиев Посад Репутация: -1 Всего: -3 |
awdev пасиб за старания, но это не то: представь, что кроме $_vars еще 10 таких атрибутов, кроме этого атрибут должен работать как массив т.е. $c->a[4]=2;
|
|||
|
||||
krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 1 Всего: 69 |
Это самый простой пример. В идеале надо реализовать через паттерн наблюдатель, а то мало ли вдруг несколько приемников будет у события. Это сообщение отредактировал(а) krundetz - 3.6.2013, 09:35 |
|||
|
||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: нет Всего: 41 |
-------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
ShamanVoodoo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 17.10.2007 Где: Сергиев Посад Репутация: -1 Всего: -3 |
krundetz> я писал уже может быть не только $_var, но и $_var2 и т.д.
Чучмек> тоже не то т.к. определенный индекс массива нельзя задать |
|||
|
||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: нет Всего: 41 |
То, не то. Гадание на кофейной гуще.
Насколько понятен вопрос - настолько точен ответ. Что ты хочешь контролировать? Добавление свойств в объект? Контролировать конкретное свойство(а)? Контролировать вставляемые ключ=>значение в свойство-массив? -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 2 Всего: 55 |
Кажись наконец-то доперло...
ТС хочет отлавливать вот такое:
Это сообщение отредактировал(а) Arantir - 3.6.2013, 18:55 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
Arantir |
|
||||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 2 Всего: 55 |
Проблема в том, что изменения массива надо отслеживать в классе объекта массива, а не в классе, где этот объект является простым полем.
придется свой массив создавать:
Это сообщение отредактировал(а) Arantir - 3.6.2013, 19:28 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
||||
|
|||||
ShamanVoodoo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 17.10.2007 Где: Сергиев Посад Репутация: -1 Всего: -3 |
вопрос задан нормально, ArrayObject вам не известен судя по постам хоть я его и упоминал. вопрос адресован прежде всего профессионалам, был бы он настолько прост я бы его вообще не задал.
Это сообщение отредактировал(а) ShamanVoodoo - 3.6.2013, 22:30 |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 1 Всего: 42 |
Нас звали? Мы пришли. Постарайтесь задать вопрос, а не выдавать поток бессвязного бреда как в первом сообщении, тогда получите ответ. Hint: чтобы свойство реагировало как массив оно должно реализовывать интерфейс массива, что вам и показали в предыдущем примере. А уж как вы будете реализовывать - это ваши половые трудности. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
awdev |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 22.11.2009 Репутация: нет Всего: 1 |
Вот такой ###код получился.. разгребай
![]()
Вывод:
То есть можно использовать много псевдо переменных: $c->foo[1]=1; $c->bar[2]=2; при этом вызывается метод SAVE при новом значении, ну и функции так же через жопу но можно проследить. вызывается __call |
||||
|
|||||
Arantir |
|
||||||||||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 2 Всего: 55 |
Черт, даже зарабатывать этим на жизнь уже недостаточно, чтобы это можно было назвать своей профессией
![]()
ArrayObject как раз таки ArrayAccess и реализует, на который в первую очередь PHP и опирается при определении корректности использования квадратных скобочек на объект. Остальное в нем — это свистели и переделки массива как такового, вроде сортировки. Если они Вам нужны — пожалуйста, реализовывайте, никто же не запрещает. Вы дали понять только то, что хотите отловить момент изменения элемента массива. Для этого достаточно ArrayAccess. Создавать свой класс для массива придется в любом случае, иначе впихнуть ивент будет просто некуда. Если Вам хочется вынести ивент в класс Controller, то это делается несложно:
-------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
||||||||||
|
|||||||||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |