Архив

Архив раздела ‘PHP’

Вышел Zend Framework 1.8

Разработчики Zend Framework просто радуют скоростью разработки своего фреймворка. Не успели все изучить новое интересное в Zend Framework 1.7, как уже готова новая версия.

Я уже перевел свой проект с Zend Framework 1.6 на версию 1.8. Из того, что сразу надо отметить: для успешного переезда необходимо будет изменить Autoloader для классов. Теперь он умеет работать с пространствами имен и собственно на них и ориентирован. Но если вам надо простая его работа - это можно легко сделать, указав параметр.

Радует также и то, что новая версия не просто исправляет ошибки предыдущей, но и включает в себя массу новых компонентов, вот что добавили разработчики: Читать далее…

admin PHP , , ,

Симфония не зазвучала. symfony не понравился.

6 Апрель 2009

Работаю сейчас над проектом, который разрабатывается с использованием PHP фреймворка - symfony. В целом, после Zend Framework, symfony мне очень тяжело дается. Бесконечная генерация миллионов классов, тысячу раз чистить кеш, и только потом получить рабочее приложение - уж сильно накладно.

На первый взгляд, если следовать туториалу на сайте - symfony позволяет за 10 минут создать свой блог. Это правда. Только если вам необходимо создать нечто более оригинальное - то тут симфони становится преградой вашим задумкам. Вообще складывается впечатление что фреймворк рассчитан та то, что б можно было показать как быстро на нем делаются блоги.

Еще один важный момент. Перед тем как начинать генерацию классов и SQL для проекта - нужно 100% определиться с необходимыми полями в БД, иначе потом придется производить все действия заново. К сожалению в нынешних условиях разработки я не знаю ни одного проекта, который бы с начала проектирования сохранил свой первозданный вид. Всегда будут “А может еще добавить…” и тут сразу возникают трудности.

Конечно, генерировать классы удобно, да и идея  ORM просто отличная, но к сожалению в проекте используем Propel, и танцы с бубном над правильным составлением Criteria достали уже.

Приятно порадовала простота реализации мультиязычности средствами i18N, надо будет посмотреть как обстоят дела у ZF с этим. Но в целом фреймворк пока не радует. Хотя мб это и ошибочное мнение и я просто не нашел подход к symfony.

Тем не менее продолжаю любить Zend Framework с его плохой реализацией шаблонов для форм :)

admin PHP , , ,

Начал использовать Zend Framework. Доволен.

8 Октябрь 2008

На работе проект разрабатываем с использованием Zend Framework. До этого с фреймворком не работал, но довольно быстро изучил основы и начал активно его использовать. Для изучения хватило понимания ООП, знаний РНР и работы с БД. Сегодня хочу немного поговорить о своих ощущениях и соображениях, которые возникли за последнее время.

Первое что следует отметить - Zend Framework накладывает серьезные правила на структуру каталогов. Это хорошо, т.к. четкая структура проекта дает понять сразу, где у тебя Контроллеры, Модели и файлы шаблонов которые отвечают за вид.

Zend Framework основан на Model-View-Controller, так что о логике разделения думаю говорить не стоит. Кроме того в Zend Framework каждый контроллер должен соответствовать правилам именования. Это относится и к файлам и именам методов классов. Такой подход считаю правильным, т.к. и коллективная разработка и логика от этого только выигрывает.

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

admin PHP , , , ,

phpDoc в Eclipse - когда код становится понятнее…

27 Июль 2008

О важности комментирования кода говорилось уже много раз. Потому о том, что комментарии помогают и очень нужны программисту мы в тысячный раз говорить не будем. Лучше поговорим о правильном и красивом использовании возможностей phpDoc в замечательной IDE - Eclipse.
Если вы хотите что б каждый класс написанный вами был понятен вам и вашим коллегам - можете использовать довольно простой стандарт записи комментариев, который будет обработан Eclipse и выведен при работе с этим классом или методом:

/**
* Short description - used in indexlists
*
* Multiple line detailed description.
* The handling of line breaks and HTML is up to the renderer.
* Order: short description - detailed description - doc tags.
*
* @param string Target directory for the generated HTML Files
*/

Если перед обьявлением класса или метода написать такой комментарий - IDE обработает его и выведет вам подсказку при дальнейшем их использовании. Это очень удобно при коллективной разработке и больших обьемах кода. Назначение методов становится понятнее, передаваемые параметры выводятся, возвращаемые значения указываются.
Следует отметить что Eclipse автоматически генерирует заготовку под такой стиль комментария после введения /** и нажатия Enter перед обьявлением метода/класса. А получить подсказку можно по нажатию Ctrl+Space после ввода $myClassName->.

admin PHP , ,

markItUp! - гибкий редактор, разработанный с использованием библиотеки jQuery

10 Май 2008

Хочу поговорить сегодня о неплохом редакторе, который написан с использованием библиотеки jQuery - markItUp! Этот редактор позволяет форматировать данные, которые вводит пользователь в виде HTML, BBcode, Wiki Syntax и т.д. Подключается и настраивается под свой проект очень легко - есть система скинов, разные настройки форматирования. Используя markItUp! в своем проекте, мне пришлось его немного подкорректировать и “обработать напильником”, но это не заняло много времени.
Смотрится редактор очень симпатично. Мне нужно было настроить нормальный визуальный редактор для форматирования BBcode - что собственно я и сделал с помощью markItUp!, а в связке с парсером BBcode - наладил нормальную обработку данных, которые вводит пользователь.
Читать далее…

admin ASP.NET, PHP , , ,

ICQ бот на PHP? Легко!

13 Апрель 2008

Привет. Вот всегда была интересна мне тема создания ICQ-ботов на PHP, и сегодня решил рассмотреть ее подробнее и поделиться с вами найденной информацией. Итак, задача: написать ICQ-бот на PHP. Что б реализовать запланированное, нам не нужно изучать протокол ICQ, а достаточно просто воспользоваться готовым РНР-классом для работы с протоколом аськи. Когда класс WebIcqLite.class.php скачан, можно приступать к первым попыткам его использовать.
Вот что дают разработчики в качестве примера использования класса:
Читать далее…

admin PHP , , ,

PHPLinq - аналог LINQ (Language Integrated Query) в C#3.0

6 Апрель 2008

Недавно, друг подсказал мне неплохое решение для работы с массивами в PHP. Это класс, который работает на подобии LINQ в C#3.0 и позволяет делать выборки из массивов с помощью конструкций, которые напоминают SQL. Вот небольшой пример, выборка слов, длина которых меньше 5 символов:

// Create data source
$names = array("John", "Peter", "Joe", "Patrick", "Donald", "Eric");

$result = from('$name')->in($names)
->where('$name => strlen($name) < 5')
->select(’$name’);

Следует отметить, что данное решение работает только с версией PHP 5.2 или выше.
Более подробная информацией по PHPLinq размещена на этом сайте.

admin C# (Csharp), PHP , , ,

Делаем Submit красивее или “Как отправить форму…”

30 Март 2008

Ко мне часто обращаются с различными вопросами. Вопросы касаются как статей размещенных на сайте, так и других, более отвлеченных тем. Так вот недавно проскочил один вопрос, который хочу раскрыть подробнее.
Итак, вопрос: Как отправить форму по нажатию на картинке?
Решение есть довольно простое и стандартное. Вот пример формы с одним текстовым полем, которая отправляет свое содержимое при нажатии на картинку:
Читать далее…

admin PHP , ,

И все-таки используем setlocale для правильного решения задачи с русским текстом

18 Март 2008

В предыдущем примере я предложил быстрое решение проблемы, при которой функции strtolower и strtoupper перестают работать с русским текстом. Это решало проблему, согласен, но настоящий программист должен уметь ПРАВИЛЬНО решать задачи. Для правильного решения задачи работы со строками в PHP, будем предварительно использовать функцию setlocale:

string setlocale ( mixed $category , string $locale [, string $... ] )

Вот как она выглядит в общем виде. setlocale явно указывает локаль, с которой будут работать функции. Параметр $category какраз и определяет, на какие функции будет распространяться установка локали, $category может быть:

  • LC_ALL - модифицировать все установки
  • LC_COLLATE - только сравнения строк, см. strcoll()
  • LC_CTYPE - классификация строк, например strtoupper()
  • LC_MONETARY - денежные значения
  • LC_NUMERIC - числовые значения
  • LC_TIME - значения даты/времени

Тоесть мы просто перед вызовами функций для работы со строками/датами/временем/денежными форматами и т.д. должны указать локаль, и дальше функции будут знать с каким текстом они работают:

setlocale(LC_ALL, ‘rus’);

Думаю такое решение задачи является более правильным и корректным.

admin PHP ,

Проблемы с русским текстом, strtolower и strtoupper?

17 Март 2008

Иногда случается так, что из-за проблем с локалями в PHP функции strtolower и strtoupper перестают работать с русским текстом. Если нет времени разбираться, а нужно быстро получить результат, можно воспользоваться таким кодом:

function toupper($content)
{
$content = strtr($content, “абвгдеёжзийклмнорпстуфхцчшщъьыэюя”,
“АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯ”);
return strtoupper($content);
}

function tolower($content)
{
$content = strtr($content, “АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯ”,
“абвгдеёжзийклмнорпстуфхцчшщъьыэюя”);
return strtolower($content);
}

Более подробную информацию всегда можно найти на сайте php.net. В поиске по функциям strtolower и strtoupper.

admin PHP , , , ,