Разработчики Zend Framework просто радуют скоростью разработки своего фреймворка. Не успели все изучить новое интересное в Zend Framework 1.7, как уже готова новая версия.
Я уже перевел свой проект с Zend Framework 1.6 на версию 1.8. Из того, что сразу надо отметить: для успешного переезда необходимо будет изменить Autoloader для классов. Теперь он умеет работать с пространствами имен и собственно на них и ориентирован. Но если вам надо простая его работа - это можно легко сделать, указав параметр.
Радует также и то, что новая версия не просто исправляет ошибки предыдущей, но и включает в себя массу новых компонентов, вот что добавили разработчики: Читать далее…
admin PHP PHP, Zend Framework, Zend_Tool, Фреймворк
Работаю сейчас над проектом, который разрабатывается с использованием PHP фреймворка - symfony. В целом, после Zend Framework, symfony мне очень тяжело дается. Бесконечная генерация миллионов классов, тысячу раз чистить кеш, и только потом получить рабочее приложение - уж сильно накладно.
На первый взгляд, если следовать туториалу на сайте - symfony позволяет за 10 минут создать свой блог. Это правда. Только если вам необходимо создать нечто более оригинальное - то тут симфони становится преградой вашим задумкам. Вообще складывается впечатление что фреймворк рассчитан та то, что б можно было показать как быстро на нем делаются блоги.
Еще один важный момент. Перед тем как начинать генерацию классов и SQL для проекта - нужно 100% определиться с необходимыми полями в БД, иначе потом придется производить все действия заново. К сожалению в нынешних условиях разработки я не знаю ни одного проекта, который бы с начала проектирования сохранил свой первозданный вид. Всегда будут “А может еще добавить…” и тут сразу возникают трудности.
Конечно, генерировать классы удобно, да и идея ORM просто отличная, но к сожалению в проекте используем Propel, и танцы с бубном над правильным составлением Criteria достали уже.
Приятно порадовала простота реализации мультиязычности средствами i18N, надо будет посмотреть как обстоят дела у ZF с этим. Но в целом фреймворк пока не радует. Хотя мб это и ошибочное мнение и я просто не нашел подход к symfony.
Тем не менее продолжаю любить Zend Framework с его плохой реализацией шаблонов для форм
admin PHP PHP, Propel, symfony, Zend Framework
На работе проект разрабатываем с использованием Zend Framework. До этого с фреймворком не работал, но довольно быстро изучил основы и начал активно его использовать. Для изучения хватило понимания ООП, знаний РНР и работы с БД. Сегодня хочу немного поговорить о своих ощущениях и соображениях, которые возникли за последнее время.
Первое что следует отметить - Zend Framework накладывает серьезные правила на структуру каталогов. Это хорошо, т.к. четкая структура проекта дает понять сразу, где у тебя Контроллеры, Модели и файлы шаблонов которые отвечают за вид.
Zend Framework основан на Model-View-Controller, так что о логике разделения думаю говорить не стоит. Кроме того в Zend Framework каждый контроллер должен соответствовать правилам именования. Это относится и к файлам и именам методов классов. Такой подход считаю правильным, т.к. и коллективная разработка и логика от этого только выигрывает.
Читать далее…
admin PHP AJAX, Framework, Zend Framework, ZF, Программирование
О важности комментирования кода говорилось уже много раз. Потому о том, что комментарии помогают и очень нужны программисту мы в тысячный раз говорить не будем. Лучше поговорим о правильном и красивом использовании возможностей 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 Eclipse, PHP, phpDoc
Хочу поговорить сегодня о неплохом редакторе, который написан с использованием библиотеки jQuery - markItUp! Этот редактор позволяет форматировать данные, которые вводит пользователь в виде HTML, BBcode, Wiki Syntax и т.д. Подключается и настраивается под свой проект очень легко - есть система скинов, разные настройки форматирования. Используя markItUp! в своем проекте, мне пришлось его немного подкорректировать и “обработать напильником”, но это не заняло много времени.
Смотрится редактор очень симпатично. Мне нужно было настроить нормальный визуальный редактор для форматирования BBcode - что собственно я и сделал с помощью markItUp!, а в связке с парсером BBcode - наладил нормальную обработку данных, которые вводит пользователь.
Читать далее…
admin ASP.NET, PHP JavaScript, jQuery, markItUp!, WYSIWYG
Привет. Вот всегда была интересна мне тема создания ICQ-ботов на PHP, и сегодня решил рассмотреть ее подробнее и поделиться с вами найденной информацией. Итак, задача: написать ICQ-бот на PHP. Что б реализовать запланированное, нам не нужно изучать протокол ICQ, а достаточно просто воспользоваться готовым РНР-классом для работы с протоколом аськи. Когда класс WebIcqLite.class.php скачан, можно приступать к первым попыткам его использовать.
Вот что дают разработчики в качестве примера использования класса:
Читать далее…
admin PHP ICQ, PHP, Бот, Программирование
Недавно, друг подсказал мне неплохое решение для работы с массивами в 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 C#, LINQ, PHP, PHPLinq
Ко мне часто обращаются с различными вопросами. Вопросы касаются как статей размещенных на сайте, так и других, более отвлеченных тем. Так вот недавно проскочил один вопрос, который хочу раскрыть подробнее.
Итак, вопрос: Как отправить форму по нажатию на картинке?
Решение есть довольно простое и стандартное. Вот пример формы с одним текстовым полем, которая отправляет свое содержимое при нажатии на картинку:
Читать далее…
admin PHP JavaScript, PHP, Программирование
В предыдущем примере я предложил быстрое решение проблемы, при которой функции 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 PHP, setlocale
Иногда случается так, что из-за проблем с локалями в 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 .NET, PHP, strtolower, strtoupper, локали