Главная » Программирование

Паттерн: Singleton

Продолжая тему паттернов бегло расскажу что это за зверь singleton. На русский язык он переводится как «одиночка», относится к порождающим паттернам и позволяет нам плодить объекты, вернее всего один. Singleton гарантирует, что будет создан только один экземпляр класса. Для этого конструктор делается приватным и создаётся статический метод, который проверяет создан ли уже объект и возвращает нам этот объект.

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

Обустраиваем Zend Studio

В Zend Strudio 7 нет парочки очень нужных вещей для php разработчика. Сперва прикрутим поддержку самого популярного шаблонизатора — Smarty. Затем добавим поддержку так же очень популярного формата yaml, который для меня похоронил xml конфиги.

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

Обновился Netbeans

Обновился IDE до версии Netbeans 6.8. Из особенностей, важных для PHP — поддержка PHP 5.3 и поддержка замечательного фреймворка   Symphony. А так же на сладкое — подсветка php в YAML. Многие не знают, но с помощью плагина легко добавляется подсветка и автокомплит smarty, покопайтесь в плагинах.

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

Отчёт о конференции «Байнет 2.3 Gamma»

Свершилось. С 14-го по 15-е мая 2009 года на просторах нашей страны случилась конференция посвящённая вэбу. Я решил пойти туда не только послушать, но и себя показать :(, но обо всём по порядку.

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

Конференция “Байнет 2.3 Gamma: в новом формате веба”

14-15-16 мая 2009. Конференция “Байнет 2.3 Gamma: в новом формате веба” – одно из крупнейших событий Беларуси в области современных информационных технологий. В 2009 году пройдет в третий раз. 14 мая будет посвящено техническим вопросам современного интернета: программирование, верстка, веб-стандарты, проектирование интерфейсов, хостинг и т.п. 15 мая будет посвящено гуманитарным вопросам: блоггинг, интернет маркетинг и пиар, аналитика рынков, дизайн, презентация новых проектов, инвестиции и т.п. 16 мая станет специализированным днем по видео в интернете: интернет-трансляции, потоковое видео и сервисы для него, интернет-телевидение, съемка, монтаж и кодирование видео и т.п. Участие в конференции БЕСПЛАТНОЕ. Программа события здесь Я буду учавствовать в конференции с докладом «Удобная работа с базами данных в PHP», который посвящён ORM, теория, реализация и более-менее подробно задержусь на Doctrine.

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

Компания microsoft открыла код MVC фреймворка для ASP.NET

К этому они шли очень долго, но никто не ждал такого финиша. Первые креативные мысли по созданию своей реализации MVC появились у разработчиков ещё в 2007 году, затем вышло несколько версий — превью, беты, релиз кандидаты. Но лишь в марте 2009 года состоялся настоящий релиз. Если релиза ждали многие, то вот о том что это будет ещё не самая важная новость, догадывалось нороду мало. Недавно было объявлено, что фреймворк является открытым и распостраняется под открытой лицензией MS-PL. Меня не прильщает ASP.NET, но посмотреть в исходники от корпорации тьмы я всё же решил, чего и другим советую. Качать здесь. Ну и немного оффтопа. Microsoft превратилась в красную тряпку для многих айтишников, а быки как известно — дальтоники, им плевать на что бросаться. Не уподобляйтесь им, не всё творимое «чёрной» компанией является плохим. И от просмотра кода или знакомства с их продуктами Вы не превратитесь мгновенно в зомби.

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

Кодировки

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

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

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 не стоит на месте, потому, кое-что уже изменилось, постоянно добавляются новые классы, методы и интерфейсы, чтобы не изобретать свои велосипеды.

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

Flash сообщения 2

Как и обещал, вернулся к flash сообщениям. Переделаем его на статические методы. Итак, немножко теории. Статические методы могут вызываться без создания экземпляра класса (объекта), при объявлении метода указывается ключевое слово static. Точно так же объявляется и статический атрибут класса.

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

Как найти BOM

Если Вы используете utf, то встречались с таким символом, как BOM (Метка порядка байтов).  Довольно бессмысленный символ при использовании utf-8, к которому неприемлим этот самый порядок. Всё бы ничего, но этот лишний символ в начале файла приносит много проблем, когда попадает в вывод скрипта и происходит бом на сайте: не работает js, проблемы с куками и сессиями, просто непонятный символ на экране…. А уж редакторов, любителей вставить сей злосный символ куда не надо, предостаточно. Всегда проклинал блокнотоподобные редакторы, но изредко для быстрой правки использую notepad++. Уже сотню раз собирался выбросить его из-за дурацкого автокомплита, который даже тег <?php не позволяет нормально писать. Но злосный BOM стал его окончательным преговором, надо же при редактировании плагина сей злосный символ попал в плагин контактной формы, а в итоге у меня отвалился javascript в редакторе, я долго не мог понять, пока не включил консоль ошибок в любимом Operaи не вычислил злоумышлинника. Даль любимый Total Commnder и поиск файлов с текстом \xEF\xBB\xBF , для этого нужно отметить RegEx (2). Asta la vista baby

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