
![]() |
Здравствуйте Гость ( Вход | Регистрация ) |
|
|
|
![]() ![]() ![]() |
![]() |
۩
Дата
|
||
![]() ![]() TERRAFORMING ENGINEER ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 3900 Пользователь №: 21196 На форуме: Карма: 88 ![]() |
xlebosol +...завтра буду уже разбираться что такое
![]() -------------------- Не тот велик, кто не падал, а тот кто падал и поднимался.
|
||
![]() |
۩
Дата
|
![]() ![]() TERRAFORMING ENGINEER ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 3900 Пользователь №: 21196 На форуме: Карма: 88 ![]() |
Всем большое спасибо.
-------------------- Не тот велик, кто не падал, а тот кто падал и поднимался.
|
![]() |
۩
Дата
|
![]() ![]() TERRAFORMING ENGINEER ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 3900 Пользователь №: 21196 На форуме: Карма: 88 ![]() |
Читаю про итераторы вот создал пример:
$input = array(1, 2, 3, 4, 5); Я не могу понять когда их применять. Может пример превел неудобный, можете объяснить по опыту, когда их применять предпочтительнее? Прочитал, что во время: $a= new ArrayObject($input); в отличии от foreach не делается копия массива в памяти, что как-бы легче, но тем не менее задействует весь этот огромный класс. Т.е. как я понимаю бессмысленно его задействовать для небольших массивов. Спасибо. -------------------- Не тот велик, кто не падал, а тот кто падал и поднимался.
|
![]() |
[x]
Дата
|
![]() ![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 1867 Пользователь №: 20757 На форуме: Карма: 197 ![]() |
ABC
, ArrayObject не является итератором, он позволяет работать с объектом как с массивом. Простой пример: Есть гараж (Garage), в который можно парковать автомобили (car). Мы бы хотели, что бы гараж можно было обходить в цикле и получать автомобили, так же нужно знать сколько автомобилей в гараже, и должен быть въезд в этот гараж (park)
По сути ArrayObject имеет реализацию интерфейсов IteratorAggregate , Traversable , ArrayAccess , Serializable , Countable. Т.е. Garage можно объявить так: Garage implements IteratorAggregate , Traversable , ArrayAccess , Serializable , Countable и реализовать эти интерфейсы. Хотя в приведенном примере это все равно нужно сделать. т.к. реализация в ArrayObject теперь работает не верно ;) |
![]() |
۩
Дата
|
![]() ![]() TERRAFORMING ENGINEER ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 3900 Пользователь №: 21196 На форуме: Карма: 88 ![]() |
kaww
Спасибо...буду еще разбираться. -------------------- Не тот велик, кто не падал, а тот кто падал и поднимался.
|
![]() |
۩
Дата
|
||
![]() ![]() TERRAFORMING ENGINEER ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 3900 Пользователь №: 21196 На форуме: Карма: 88 ![]() |
Все хорошо...но $it - объект...а значит напрямую какие-то манипуляции как с массивом с ним уже невозможны. Да и загружать в память такой класс (через ReflectionFunction или RecursiveArrayIterator) ради того , чтоб несколько массивов объединить... Короче, все равно решил использовать eval(). Да вариант не кошерный, но самый быстрый. В любом случае еще раз kaww, xlebosol еще раз спасибо. -------------------- Не тот велик, кто не падал, а тот кто падал и поднимался.
|
||
![]() |
|||
![]() ![]() Глухой нуб ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Администратор ![]() Сообщений: 17423 Пользователь №: 6543 На форуме: Карма: 327 Трезвый : 14 лет, 4 месяца, 30 дней ![]() |
Кто-нибудь сможет внятно объяснить, в чем его некошерность? Именно в данном контексте. Очень хотелось бы услышать обоснования, а не голые декларации eval()=зло. -------------------- Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.
Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право. Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках. ![]() |
||
![]() |
|||
![]() ![]() Знатный быдлокодер ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 337 Пользователь №: 32761 На форуме: Карма: 19 ![]() |
В данном контексте ничего страшного нет. В контексте больших проектов: отсутствие прозрачности (что за чем следует), сложность поддержки и рефакторинг кода, связи с тем что куски кода могут быть где угодно (например cms NetCat, где куски кода в базе данных) и вывод осуществляется вида - eval(название переменной);. Что в свою очередь ведет к трудности понимания архитектуры приложения, так как код из базы данных может быть использован в каком то eval, какого то класса и в результате чего рефакторинг может отрицательно сказать на других частях системы. Кроме того, что выше поста я указывал на книгу создателей процессора Zend Engine 2, где они сами предупреждают об необходимости избегать использования данной функции. |
||
![]() |
|||||
![]() ![]() Глухой нуб ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Администратор ![]() Сообщений: 17423 Пользователь №: 6543 На форуме: Карма: 327 Трезвый : 14 лет, 4 месяца, 30 дней ![]() |
Так вот и не нужно декларировать вполне годную и рабочую функцию как зло. Нужно просто уметь её применять. Так же как и globals. Дело в том, что обжегшись на молоке вы начинаете дуть на воду. ТС правильно рассудил. Нахрена нужны головняки с итераторми, если это решается проще и рациональнее с eval(). А вопрос у него - не колхоз ли? И тут понеслось: зло! колхоз! говнокод! кто-то там где-то чего-то писал, сам не помню чего. Нибижали. Что за манера пугать людей... -------------------- Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.
Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право. Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках. ![]() |
||||
![]() |
|
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 26774 Пользователь №: 21350 На форуме: Карма: 756 ![]() |
зло - это когда руки из ж*** и мозгов нет. - а если так то и str_replace() даже зло.
-------------------- HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
|
![]() |
|
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 26774 Пользователь №: 21350 На форуме: Карма: 756 ![]() |
нет. не колхоз. просто нужно внимательней относиться к коду и не допускать дыр, тогда и eval() очень полезным окажется
-------------------- HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
|
![]() |
|
![]() ![]() Эникейщик ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 4058 Пользователь №: 19498 На форуме: Карма: 90 ![]() |
Eval иногда единственное решение. Буть эта ф-я "плохой" ещё не было бы в принципе
-------------------- Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
|
![]() |
![]() ![]() ![]() |