Обновить
4
dpritula@dpritula

Пользователь

1
Подписчики
Отправить сообщение
да за одни фавикошки огромный респект!
молодцы, отличная работа! успехов вам!
Отличные новости!

Бюджет — 25тыс.

Делаем за 20, 5 — лично Вам на подарки жене и детям ;)
Первый раз вижу такую неадекватную реакцию на упоминание об sql-injection…
почему? что там такого outstanding, что заставляет Вас так говорить? На всякий случай — говоря о лимбе, я имел ввиду стиль, код и подход к решению определенных задач
Я «пришел» в php из Flash/Flex, имея вобщем-то немалый «багаж» в архитектурировании приложений. Продирался довольно долго через отсутствие полноценного контекста приложения. Упрощал сам несколько раз решения, отказывался от шаблонов проектирования, к которым привык. Что-то вырисовал для себя, чем сейчас и пльзуюсь.

Интерфейсы абсолютно не лишние (по крайней мере для меня). Самый простой пример — инверсия зависимостей (базовые зависимости — это интерфейсные зависимости) Это отлично применимо и к динамическим языкам и к любым другим. Еще один пример — реализация паттерна Наблюдатель в интерфейсах. Отличная вещь, которая в купе с memcached, паттерном ActiveRecord и IdentityMap позволила выжить довольно сложному высоконагруженному проекту и показать производительность на 30% выше при прочих равных в сравнении с процедурным кодом.

А то, что кто-то не поленился — честь и хвала :)
Привет! Я закругленный блок!
айайай! Вы даже не удосужились глянуть на страницу www.php.net/~helly/php/ext/spl/ — страницу этой самой библиотеки.

Все дело в том, что эта библиотека дала возможность использовать нативные интерфейсы RecursiveIterator, IteratorAggregate, OuterIterator, Countable, SplObserver и достаточное количество абстрактных классов для построения сложных систем.

А нужны они по одной простой причине — для написания качественного, расширяемого кода.

Посмотрите limb, onPHP, mzz — сложные и интересные объектные струтктуры — и Ваш сарказм заметно поубавится :)
за интерфейсы SPL — разработчикам отдельное спасибо
ребята, унылое у вас самотверждение :)
первый пошел
пошли вы в жопу со своим минусованием
тупак на глагне
Гуглю известны секреты мироздания, %username%
ого, минусов нахватал :)
> переписано с нуля…
а с -1 никогда не пробовали переписывать?
че-то как-то не вставил крендель этот…
спасибо за работу!
Итерировать по исключению не есть гуд. Не нагружайте инструмент лишним функционалом. FormValidator - отдельно, FormValidationException - отдельно, с кодом ошибки и сообщением (const FIRST_FIELD_ERROR, const LAST_FIELD_ERROR ....).

Несколько скомканный пример, а в целом хорошо. Исключения - очень хорошая практика ИМХО.
public function offsetGet($offset) {
if (isset($this->attributes[$offset]))
return $this->attributes[$offset];
throw new Exception("Атрибута [$offset] не существует");
}

public function offsetExists($offset) {
return isset($this->attributes[$offset]);
}
--------------------------------------------------------
Метод offsetGet необходимо переписать с учетом существования метода offsetExists

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность