Почему я ненавижу демократию и считаю её идиотской формой власти. Я родился в великой коммунистической стране СССР, но уже школьные годы прошли в демократическом гуано свежеиспечённой страны Республика Белорусь. В той же школе, а затем в университете мне вбивали мысль, что демократия === гуд. Но у меня по этому поводу свои мысли. Continue reading
Monthly Archives: Декабрь 2008
Кодировки
Как это не странно, но до сих пор очень часто многие начинающие задают вопрос о кодироках, вернее о «неправильном» отображении русских буковок. Постараю описать все по порядку, следуя данному списку инструкций у меня никогда не возникало проблем с кодировками. Continue reading
Персональны аттестат webmoney.
Задача:
Обналичивать электронные деньги webmoney в Белоруси.
Исследования:
Данным делом у нас в стране занимается «Технобанк», снимать можно только белорусскую валюту, её аналог в webmoney — WMB. Continue reading
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/, оказавшийся очень приятным ресурсом, нашёл интересный тест. Я не люблю такие, вещи, но это же ФУТУРАМА
|
Результат теста «На кого из героев „Футурамы“ ты похож»:
Если Вы желаете узнать больше о своем характере и о характере героев «Футурамы», то прочитайте статью «Псих-о-рама». |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Зря проходил, сейчас думаю, неужели я так похож на блондинку, сходство с Бендером, хоть немного утешает мою боль.








