![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
jzZ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 17.7.2006 Репутация: нет Всего: 2 |
Собственно САБЖ, но не надо ссылок на официальную документацию по SPL, я там читал, но мой английский плох, так что я почти ничего не понял. Лучше на русском, может статейка у кого какая есть
![]() Кокректно интересует как обращаться к св-ву объекта так: $obj['a'], работа с объектом как с обычным массивом при помощи функций т.е. array_flip итд. Заранее благодарен! |
|||
|
||||
ewolf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 15.8.2006 Где: г. Москва Репутация: нет Всего: 18 |
к свойству объекта можно обратится как
|
|||
|
||||
jzZ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 17.7.2006 Репутация: нет Всего: 2 |
ewolf
оффтоп... Я говорю об этом
Добавлено @ 19:45 Как добиться такого эффекта + использование стандартных функций для работы с объектом как с массивом?! Насчет функций я вообще неуверен возможно ли это, но точно знаю что возможно использовать foreach для объекта типа так: foreach($obj as $k => $v) Об этом прочитать можно тут http://ru.php.net/SPL Жду помощи, знатоки откликнитесь... Это сообщение отредактировал(а) jzZ - 20.8.2006, 19:45 |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
jzZ, что ты вообще пытаешься сделать?
|
|||
|
||||
jzZ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 17.7.2006 Репутация: нет Всего: 2 |
Я просто хочу разобраться в новых фичах php5.
А для наглядного примера, допустим так:
Код взят отсюда: http://qdp.ru/2006/06/17/print:page,1,include_v_php.html Для начала можно было бы реализовать это в классе, причем индекс массива $pages и будет нашим свойством. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
||||
|
||||
jzZ |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 17.7.2006 Репутация: нет Всего: 2 |
Mal Hack
Что значит какое именно, ВО ВСЕХ!!! там множественное число... А сейчас кокретно меня интересует доступ к объекту как к массиву, читай тему, и просьба больше не оффтопить... |
||||
|
|||||
Vaulter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: нет Всего: 22 |
jzZ, хм...
слышал только о таких методах
читай про overload() функцию |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Неперь покажи мне, где об этом писалось... Первый раз в жизни слышу. Это по сути бред, на самом деле... Глянь сюда: http://forum.vingrad.ru/index.php?showtopic=107059&hl= |
|||
|
||||
jzZ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 17.7.2006 Репутация: нет Всего: 2 |
Vaulter
А зачем методу __get() возвращать просто true? Тем более что вызов неопределенной переменной будет таким: $obj->property; То зачем нужен какой-то сторонний массив elum? Я говорю о таком вызове
Mal Hack Об этой ссылке я знаю, если ты не заметил в этом посте был и я ) Совсем не бред, если бы ты внимательно прочитал код предоставленный imm, и прислушался бы к моим утверждениям там (твоя ссылка), ты бы все понял. Писалось между прочи именно там http://forum.vingrad.ru/index.php?showtopic=107059&st=0 Добавлено @ 15:30 щас колдую над наглядным примером... |
|||
|
||||
jzZ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 17.7.2006 Репутация: нет Всего: 2 |
Что типа наглядного примера или 'я же вам говорил'.
Перечитал документацию по arrayaccess, однако все равно не понял действия абстрактных методов в интерфейсе arrayaccess.
Если кто знает как перебрать объект как массив, буду очень благодарен примеру. |
|||
|
||||
Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: нет Всего: 6 |
Э... не успел...
Единственным вариантом для тебя будет перебор (ессесно рекурсивный) объекта и создание массива. (Я не спрашиваю зачем это тебе надо)
-------------------- |
|||
|
||||
ewolf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 15.8.2006 Где: г. Москва Репутация: нет Всего: 18 |
Так как речь идет о php 5, то возможно тебе поможет вот это
http://www.php.net/manual/ru/language.oop5.iterations.php В этом случае можно, по крайней мере упростить пример Alone |
|||
|
||||
Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: нет Всего: 6 |
Нет. Существенно ничего не поменяется.
Вернее даже абсолютно ничего не поменяется, так как перебор в обоих случаях основан на foreach -------------------- |
|||
|
||||
jzZ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 17.7.2006 Репутация: нет Всего: 2 |
Alone
Пример хорший, взял на заметку спасибо. Нафлужу 100 постов кину + ewolf Спасибо за ссылку(информативно и на русском) конечно проще, но у alone креативней ![]() Добавлено @ 20:28 Пока все не разбежались, хотелось бы узнать возможно ли заставить объект крутиться так же как массив, допустим вызовом того же array_map Это сообщение отредактировал(а) jzZ - 21.8.2006, 20:29 |
|||
|
||||
Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: нет Всего: 6 |
Э... недопонял... Ты хочешь к свойствам объекта применить callback функцию? -------------------- |
|||
|
||||
jzZ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 17.7.2006 Репутация: нет Всего: 2 |
Alone,
Да, возможно ли? |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
||||
|
||||
Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: нет Всего: 6 |
Ну, как подсказывают выше, самым что ни на есть противоестественным путем ![]() Перегоняешь объект в массив, применяешь к нему калбекфунк. а потом обратно перегоняешь массив в объект... Только вот одно меня чешет: анакойхер это тебе надо? ![]() ![]() -------------------- |
|||
|
||||
jzZ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 17.7.2006 Репутация: нет Всего: 2 |
Alone
Ну может это покажется странным, но так... на досуге пробую изобрести какой-нибудь интересный метод кэширования на основе классов, вот заодно эксперементирую с ООп в php5 |
|||
|
||||
Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 1 Всего: 55 |
А тут все просто. Есть такой интерфейс - ArrayAccess. Пользоваться им очень легко:
|
|||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: нет Всего: 73 |
jzZ, используй интерфейсы Iterator, ArrayAccess и у тебя все получится.
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Extensions | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |