Месяц: Декабрь 2008

Дермократия

Почему я ненавижу демократию и считаю её идиотской формой власти. Я родился в великой коммунистической стране СССР, но уже школьные годы прошли в демократическом гуано свежеиспечённой страны Республика Белорусь. В той же школе, а затем в университете мне вбивали мысль, что демократия === гуд. Но у меня по этому поводу свои мысли.

Читать далее »

Кодировки

Как это не странно, но до сих пор очень часто многие начинающие задают вопрос о кодироках, вернее о «неправильном» отображении русских буковок. Постараю описать все по порядку, следуя данному списку инструкций у меня никогда не возникало проблем с кодировками.

Читать далее »

Персональны аттестат webmoney.

Задача: Обналичивать электронные деньги webmoney в Белоруси. Исследования: Данным делом у нас в стране занимается «Технобанк», снимать можно только белорусскую валюту, её аналог в webmoney — WMB.

Читать далее »

PHP: доунгрейд до 5.2.6

Из-за ошибки с magic_quotes_gpc провалился выход версии 5.2.7. Но, вместо ожидаемого выхода версии 5.2.8, который уже неофициально валяется открытом доступе, разработчики предложили откатиться до старой версии :(. Как мне кажется такой ляп вызван тем, что основные силы брошены на ветки 5.3 и 6.

Читать далее »

Обновляемся до версии PHP 5.2.7

В то время как вся общественность ждёт выхода стабильных PHP 6 и релиза PHP 5.3 в которых обещана масса приятных вещей типо Namespace, лямбда функций, посзденого статического связываний и т.д. А вот PHP 5.2.7 появился как-то незаметно, да это и понятно, в основном все изменения закрывали тикеты с багами плюс обновления библиотек. Обновиться естественно нужно сейчас же и можно продолжать ждать. P.S. Лучше не обновляться, как выяснилось есть серьёзный баг с magic_quotes_gpc on, который игнорируется, соответственно будут проблемы со скриптами, где программисты рассчитывали на эту функцию источник Все изменения как всегда здесь

Читать далее »

Doctrine 1.1 Alpha

Продолжает набирать обороты ORM фреймворк на PHP — Doctrine. Недавно он стал основным в популярном фреймворке Symfony, а сейчас появилась самая долгожданая фича — нормальная миграция. Как таковой инструмент был и ранее, но сейчас он превратился в понастоящему юзабельный. Теперь при миграции автоматически делаются диффы для схем и на их основе генерятся классы для миграции. Меньше работы ручками, больше времени для пива с друзьми. Более подробно читайте в блоге разработчиков

Читать далее »

SPL в PHP: ArrayObject

Довольно неожиданно пришла идея довести начатый шаблонизатор до юзабельного вида, дописал хелперы, встроил кеширование, решил прицепить хелпер для формы. И здесь мне стало нехватать ООП стиля. Накидав кой-чего понял что вначале нужно написать цикл статей о SPL (Стандартной PHP библиотеке). Эта штука очень полезна при ООП стиле кодирования, а особо нормальных статей об SPL на русском я не обнаружил. Начнёмс. ArrayObject — предназначен для того, чтобы объект вёл себя как массив, даёт доступ к данным через квадратные скобки и позволяет делать foreach ArrayObject implements IteratorAggregate , Traversable , ArrayAccess , Countable { /* Methods */ ArrayObject::__construct ( mixed $input ) void ArrayObject::append ( mixed $newval ) int ArrayObject::count ( void ) ArrayIterator ArrayObject::getIterator ( void ) bool ArrayObject::offsetExists ( mixed $index ) mixed ArrayObject::offsetGet ( mixed $index ) void ArrayObject::offsetSet ( mixed $index , mixed $newval ) void ArrayObject::offsetUnset ( mixed $index ) } Данный класс имплементирует интерфейсы IteratorAggregate , Traversable , ArrayAccess , Countable IteratorAggregate , Traversable — отвечают за гуляние по объекту, соответственно нужно реализовать метод getIterator. Эти вещи будем разбирать в другой раз. Countable — нужно реализовать интерфейс для получения размера count. ArrayAccess — это  квадратные скобочки — проверка существования offsetExists, получение значения — offsetGet, присвоение значения — offsetSet, уничтожение элемента — offsetUnset и добавление элемента — append. Со скучной теорией покончено, сейчас практика class Amdy_Array extends ArrayObject { protected $array; public function __construct($array) { $this->array = $array; } public function append($value) { $this->array[] = $value; } function offsetSet($key, $value) { if ($key) { $this->array[$key] = $value; } else { $this->array[] = $value; } } function offsetGet($key) { if ( array_key_exists($key, $this->array) ) { return $this->array[$key]; } } function offsetUnset($key) { if ( array_key_exists($key, $this->array) ) { unset($this->array[$key]); } } function offsetExists($offset) { return array_key_exists($offset, $this->array); } public function dump() { var_dump($this->array); } } Так мы побыстрому создали свой обработчик, унаследовав класс из SPL. Что же там происходит. В конструктор передаётся сам массив, его можно передать и позже, но не важно. Данный массив мы загоняем во внутреннюю переменную $this->array, дальше, мы описываем,  как должны обрабатываться запросы к объекту как к массиву. Т.е. все запросы будут реально относиться в переменно $this->array. Можно и вовсе не заводить эту переменную, а работать с атрибутами класса, если в коде заменить $this->array, на get_class_vars($this), $this->{$k} и т.д. Простой пример использования. $array = new Amdy_Array( array( ‘test’, ‘test1’ => array(0,1,2,3), 2, ‘test4’ => ‘test2 value’ ) ); $array[] = ‘test2222’; echo $array[0] . ‘<hr/>’; echo $array[‘test4’] . ‘<hr/>’; $array->dump(); PHP не стоит на месте, потому, кое-что уже изменилось, постоянно добавляются новые классы, методы и интерфейсы, чтобы не изобретать свои велосипеды.

Читать далее »

Футурама тест

нашёл ссылающийся на меня блог http://dk.testea.ru/, обрадовался, что всё же кто-то меня читает и находит это полезным. Полазав по http://testea.ru/, оказавшийся очень приятным ресурсом, нашёл интересный тест. Я не люблю такие, вещи, но это же ФУТУРАМА Результат теста «На кого из героев „Футурамы“ ты похож»: Проф. Лила Гермес Бендер Зойдберг Фрай Эми Киф Зепп -2 2 -1 5 -7 3 10 -1 1 Если Вы желаете узнать больше о своем характере и о характере героев «Футурамы», то прочитайте статью «Псих-о-рама». Пройти тест. Зря проходил, сейчас думаю, неужели я так похож на блондинку, сходство с Бендером, хоть немного утешает мою боль.

Читать далее »