Доброго времени сутоке. Собственно хотелось бы узнать ваше мнение. Есть ли вообще смысл в написание статей посвященных Symfony 2?
Читать полностью »
Рубрика «php» - 171
Есть ли смысл в статьях для тех кто начинает изучать Symfony
2013-11-18 в 20:16, admin, рубрики: php, symfony, symfony2, опрос, метки: PHP, symfony2, опросHTML Purifier. Расширяем возможности
2013-11-18 в 9:56, admin, рубрики: php, yii, Блог компании SmartProgress, метки: PHP, yii
Буквально пару абзацев я уделю внимание особенностям взаимодействия этой библиотеки с фреймворком Yii, остальное же в полной мере универсально и будет интересно всем, кто использует или планирует использовать эту библиотеку
Если вы уже хорошо знакомы с Purifier то можете смело начинать читать отсюда
Немного о HTML Purifier
Если вы не слышали о такой прекрасной библиотеке (а поиск на Хабре говорит о не такой уж большой популярности) как HTML Purifier, то советую обязательно к ней присмотреться, особенно если ваши пользователи генерируют контент в html формате. Это может быть рядовой пользователь, модератор или даже администратор.
Что же делает эта библиотека?
Согласно конфигурации она очищает любой html код от всех вредоносных, невалидных, запрещенных (вашей конфигурацией) частей кода, в том числе отдельные атрибуты.
Читать полностью »
Поиск различных вариантов транслитерации русских текстов (ФИО) латиницей для выборок в MySQL
2013-11-18 в 8:31, admin, рубрики: mysql, mysql tricks, php, Регулярные выражения, транслитерация, метки: mysql, mysql tricks, PHP, транслитерация Собственно, столкнулся с банальной задачей — есть база, в которой есть масса данных ФИО, написанных латиницей. Зачастую достаточно безграмотно и непредсказуемо транслитерировано. Вроде бы и есть ГОСТ 7.79 (ISO 9), но на практике его далеко не всегда соблюдают.
Задача — есть БД с записями (как правило, ФИО) латиницей. Плохой латиницей. Требуется по русской подстроке поиска в вэб-приложении выбрать из БД (MySQL) записи, похоже транслитерированные на латиницу.
Функция «ковра»
2013-11-17 в 8:53, admin, рубрики: php, забавно, математика, Программирование, теория чисел, метки: забавно, Программирование, теория чисел Подшефные ребята осваивают вэб-программирование, в частности, PHP.
Одной из первых задач на освоение таблиц <table> они получают задание отрисовать на PHP таблицу умножения, эдак 25х25.
Далее начинаются простые «навороты» — например, выкрасить в полученной таблице клетки с четными числами. Как выяснилось, наворотами можно наслаждаться часами.
Читать полностью »
PHP Console 3.0 — важнейшее обновление за 3 года
2013-11-17 в 0:34, admin, рубрики: Google Chrome, php, Веб-разработка, метки: Google Chrome, PHP, Веб-разработкаПрошло 3 года с момента выхода первой версии, о которой вы могли читать в статье Как подружить PHP с консолью Google Chrome. За это время расширение набрало 43`000 активных пользователей, и, что не менее важно, в ноябре 2013 обновилось до версии 3.0. Несколько месяцев разработки, и получилась полностью переписанная, в несколько раз более функциональная версия.
Новый функционал PHP Console 3.0
- Отладка PHP ошибок и исключений (было в v1.1)
- Дамп переменных любого типа
- Выполнение PHP кода удалённо
- Защита соединения по паролю
- Группировка данных отладки по URL запроса
- Открытие файла-строки ошибки в вашей IDE по клику на кнопку в уведомлении
- Копирование данных ошибки/дампа в буфер обмена(для тестеров)
- Новый клиент-сервер протокол без ограничений на размер данных
- Новая PHP библиотека на GitHub
- Новое расширение для Yii
- И многое другое...
В статье:
- Скриншоты
- Видео
- Список функций Google Chrome расширения
- Список функций PHP библиотеки
- Голосование за партирование на другие языки
Диспетчер событий с фильтрацией по шаблону
2013-11-15 в 9:34, admin, рубрики: Events, php, Программирование, фильтрация, метки: Events, фильтрацияНедавно у меня появилась необходимость в простом и функциональном диспетчере событий. После непродолжительных поисков на Packagist-е я нашел пакет Evenement, который почти полностью подходил под мои требования. Но все же отбор он не прошел из-за двух параметров:
- была нужна возможность порождать события по шаблону;
- интерфейс библиотеки визуально не понравился.
Конечно же, я принял решение доделать и причесать библиотеку «под себя».
Порождение событий по шаблону
Мне нужна была возможность с помощью шаблона порождать нужные события, имена которых представляют собой иерархические ключи (foo.bar.baz
).
Например, для такого списка событий:
some.event
another.event
yet.another.event
something.new
Нужно породить все события, заканчивающиеся на «event». Или начинающиеся на «yet» и заканчивающиеся на «event», и не важно, что в середине.
Читать полностью »
Continuous Delivery hecho en Alawar
2013-11-15 в 8:18, admin, рубрики: continuous delivery, continuous integration, php, Блог компании «Alawar Entertainment», Веб-разработка, метки: continuous delivery, continuous integration, PHPОколо года назад перед нашей командой была поставлена задача стартовать разработку серверных частей ряда игровых MMO проектов. Специфика такого рода проектов помимо требований к гибкости, стабильности и масштабируемости также включает в себя:
- необходимость A/B-тестирования разных версий одной и той же игры
- возможность по максимуму переиспользовать функционал от одной игры в другой
- высокую вероятность географической удаленности от разработчиков занимающихся клиентским функционалом
Более того, в дальнейшем нашу команду предполагалось расширить, возможно за счет аутсорс разработчиков, в том числе и для задач поддержки. В этих условиях для успешной реализации было решено наравне с версионированием проектов, пакетированием и стандартизацией ряда шагов разработки внедрить и практику continuous delivery.
Цель данной статьи – рассказать о проделанных шагах, принятых решениях и описать полученный результат.
SonataMediaBundle. Русская версия перевода файла xliff
2013-11-14 в 10:17, admin, рубрики: php, symfony, symfony 2, админка, метки: symfony 2, админка Доброго времени сутоке. Во время работы над админ частью одного русскоязычного ресурса, появилась необходимость, что бы вся админка была на русском языке. В самой SonataAdminBundle файлик такой есть, и это не вызвывает сложностей. Но как оказалось, подключенная к AdminBundle другой Сонатовский бандл, а именно SonataMediaBundle не обладает таким интерфейсом. Собственно появилось необходимость перевести его, так как не нашел в сети. Что из этого получилось? Прошу под кат.
Читать полностью »
Новое в Symfony 2.4: компонент ExpressionLanguage
2013-11-13 в 19:34, admin, рубрики: 2.4, expression language, php, symfony, symfony components В Symfony 2.4 появится новый компонент — ExpressionLanguage. Компонент является движком для компиляции и исполнения «выражений».
Этот язык является урезанной версией твига. Выражения укладываются в одну строку и обычно возвращают булево значения, но не ограничиваются этим.
В отличии от твига, ExpressionLanguage работает в двух режимах:
- Компиляция: выражение компилируется в PHP код для последующего исполнения (код не зависит от среды выполнения)
- Исполнение: выражение исполняется без предварительной компиляции
Чтобы было возможно компилировать выражения в PHP код, не нуждающийся в модификации во время выполнения, оператор .
должен быть явным и означать лишь одно возможное поведение: foo.bar
— для свойств объекта, foo['bar']
для доступа к массиву, foo.getBar()
для вызова методов.
Использование компонента просто на сколько это возможно:
use SymfonyComponentExpressionLanguageExpressionLanguage;
$language = new ExpressionLanguage();
echo $language->evaluate('1 + 1');
// echo 2
echo $language->compile('1 + 2');
// echo "(1 + 2)"
Язык выражений поддерживает все то же что и твиг: математические операторы, строки, числа, массивы, хеши, булевы переменные… Выражения могут рассматриваться как очень ограниченная PHP-песочница, в которой невозможны внешние воздействия, все переменные должны быть объявлены заранее до компиляции или исполнения выражения.
$language->evaluate('a.b', array('a' => new stdClass()));
$language->compile('a.b', array('a'));
Последнее, но не по значению — вы можете легко расширить функциональность языка. Они работают точно также как их аналоги в твиге (для подробного ознакомления посмотрите метод register()
)
Как на счет примеров использования? Мы встроили компонент во множество других компонентов, используемых в Symfony.
Читать полностью »