Обновить
128K+

PHP *

Скриптовый язык общего назначения

106,61
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Дайджест интересных новостей и материалов из мира PHP за последние две недели №11 (12.02.2013 — 25.02.2013)

Время на прочтение7 мин
Охват и читатели20K


Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.

Приятного чтения!
Читать дальше →

Шаблоны в шаблонизаторе и как шаблоны Django до PHP дошли (в очередной раз)

Время на прочтение5 мин
Охват и читатели8.1K
За предвкушением 23-го февраля можно даже и не заметить, как вечер четверговых разговоров о шаблонизаторах для PHP может плавно перетечь в вечер пятничных.

В статье будет рассмотрено несколько тем, начиная с темы нужности шаблонизаторов вообще и в PHP в частности, и заканчивая заметками о процессе создания шаблонизатора dja (портировании кода с Python на PHP).

Читать дальше →

Separate – Шаблонизатор для PHP

Время на прочтение3 мин
Охват и читатели17K
image
Представляю вашему вниманию PHP шаблонизатор, который я разрабатывал несколько лет и только недавно выложил в сеть.

Как все началось и зачем вообще нужен еще один шаблонизатор?


Smarty и другие популярные шаблонизаторы мне показались слишком громоздкими для простых проектов и я решил разработать собственный шаблонизатор. Первая версия появилась еще в 2004 году. В процессе разработки интернет проектов я постоянно внедрял новые идеи и прочие улучшения. В настояший момент движок шаблонизатора состоит из всего одного файла и все равно имеет ряд уникальных возможностей.

На сайте separate.esud.info вы можете скачать исходный код. Также там доступна подробная документация всех функций на трех языках – русском, английском и немецком. Я надеюсь что проект заинтересует людей и будет в будущем активно развиваться. Поэтому код я выложил в Github на сайте github.com/esud/separate

Подробное описание вы найдете на сайте ru.separate.esud.info/documentation
Ниже я коротко опишу ключевые возможности.

Читать дальше →

Пример удобной организация split (A/B) тестирование на серверной стороне

Время на прочтение3 мин
Охват и читатели3.5K
Здравствуйте, уважаемые хабравчане!
Хотел бы поделится с Вами некоторым опытом организации split тестирование на проекте с которым довелось работать, также прошу не судить строго, так как это моя первая статья и действительно огромного профита ожидать не стоит.
Как мы все знаем, split (A/B) тестирование на сайте представляет собой экспериментальный подход с целью повышение конверсии по какому-либо процессу на ресурсе путем отображения различным группам пользователей разного контента.
Читать дальше →

Файловый менеджер (Silex + Kendo UI) — Tutorial

Время на прочтение5 мин
Охват и читатели19K
Внезапная история из прошлого! Дело было так. Несмотря на то, что я программист «немного другого толку», обратились ко мне со стандартной просьбой – сделать сайт. Обычно я не берусь за подобные дела, но в этот раз решил немного подзаработать, тем более что это был не сайт-визитка или интернет-магазин, а нормальный сайт с базой некоторых объектов, объекты добавляются-редактируются-удаляются (аля CRUD) и с ними необходимо выполнять некоторые операции. О! подумалось мне, да это идеальная задача для (название фреймворка скрыто) и после всяческой бухгалтерии я незамедлительно приступил к делу.

Собственно дальше ничего интересного и необычного так и не произошло. Спустя какое-то время заказчику был продемонстрирован сайт. И… он остался доволен. Очень неожиданное завершение истории.

Правда, появилась небольшая как бы просьба. Файловый менеджер, тот, с помощью которого на сайт в статью можно вставить картинку, ему не понравился. Вот хотелось ему чтобы всё как-то проще было. А тут и кнопок целых 20! Да и действий много. А нужно-то всего-навсего загрузить картинку на сервер и вставить на страничку. Ну ладно, подумал я, их же целый интернет, да и сам я много раз делал подобные решения. Но один страшен, как чёрт, другой по одному файлу загружает за раз, а вот третий ничё так вроде, но платен. В общем, история завершилась быстро, созданием простенького файлового менеджера с нуля. Но как-то сиделось мне, да и взгрустнулось. И выпил я (сока с мякотью, конечно). И открыл IDE и понеслось…
Читать дальше →

HOWTO: Одна из возможных реализация Модели (MVC) в Zend Framework

Время на прочтение15 мин
Охват и читатели16K
Написание статьи навеяно habrahabr.ru/qa/34735 и habrahabr.ru/qa/32135 вопросами, в качестве ответов на которые не смог найти полной и подробной информации, чего очень не хватало. Я надеюсь, что она будет полезна и другим.

Проект, на чью долю пал выбор в виде ZF в качестве основного фреймворка, представлял из себя мобильную версию сервиса (адаптивный дизайн с некоторыми ньюансами) + АПИ для мобильных приложений.
Коллегиально было принято политико-техническое решение делать единое АПИ, посредством которого будет общаться и сайт, и приложения.

На этом, думаю, прелюдию можно закончить и перейти к самому интересному.
Читать дальше →

Zend Optimizer+ наконец выложен на гитхаб

Время на прочтение1 мин
Охват и читатели17K
Пару недель назад, Zeev Suraski, один из главных контрибьюторов PHP и по совместительству co-founder Zend, предложил включить в ядро PHP Zend Optimizer+.
Zend Optimizer+ это, так же как и Apc, кешер опкодов. Но, в отличии от Apc, он также неплохо умеет применять стандартные паттерны оптимизации кода.
Помимо этого, оптимайзер дает одну хорошую плюшку — его разработку поддерживает коммерческая организация, например стабильная поддержка трейтов в нем появилась почти одновременно с релизом PHP 5.4, в то время как APC нужно было ждать около полугода. В данный момент он уже поддерживает PHP 5.5.
Читать дальше →

Проверка работоспособности кода на множестве версий PHP

Время на прочтение2 мин
Охват и читатели8.5K
Всем доброго времени суток. На днях понадобилось проверить работоспособность 4 вариантов кода на разных версиях PHP (в сумме около 20). Причём изначально было понятно что 4 экземплярами дело не ограничится — в будущем подобных тестов предвидится больше. Вручную всё это делать очень утомительно, поэтому было написано 2 скрипта, которыми я бы хотел с вами поделиться.
Читать дальше →

Внедрение зависимости c Inversion

Время на прочтение4 мин
Охват и читатели7.5K
Inversion это простой и функциональный контейнер внедрения зависимости для PHP 5.3. Поддерживает сервис-ориентированную архитектуру, ссылки, PRS-0, и Composer.



Установить можно через packagist.org: granula/inversion либо скачав и добавив к PRS-0 совместимому загрузчику.

$container = new Inversion\Container();
$container['foo'] = 'My\Class\Foo';
// ...
$foo = $container('foo');

Подробности

Дайджест интересных новостей и материалов из мира PHP за последние две недели №10 (26.01.2013 — 11.02.2013)

Время на прочтение7 мин
Охват и читатели18K


Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.

Приятного чтения!
Читать дальше →

Что и в каком объеме нужно знать php программисту

Время на прочтение4 мин
Охват и читатели45K
Хочу сразу оговориться данная статья что отображает мое собственное мнение по этому вопросу основанное на личном опыте и не претендует на абсолютную точность. Написана она для тех, кто или только задумывается на карьерой php программиста или думает что бы изучить дальше.

Читать дальше →

Об одной малоизвестной уязвимости в веб сайтах

Время на прочтение4 мин
Охват и читатели80K
Первое правило безопасности при разработке Веб приложений гласит: —
Не доверять данным пришедшим от клиента.
Почти все это правило хорошо знают и соблюдают. Мы пропускаем через валидаторы данные форм, кукисы, даже URI.
Но недавно я с удивлением обнаружил, что есть одна переменная, приходящая от клиента, которую почти никто не фильтрует.
Речь пойдет о компрометации веб приложения через подмену значения HTTP_HOST и SERVER_NAME.
Читать дальше →

AzaMath — Cистемы счисления (включая кастомные) + арифметика произвольной точности на PHP

Время на прочтение6 мин
Охват и читатели7.7K
Возникла недавно задача, связанная с конвертацией между различными позиционными системами счисления.

В качестве реального применение обычно выступают сервисы для сокращения URL, использующие системы base36/base62 или, например, хранение большого количества огромных чисел в том же base62 для экономии памяти.

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

Получилась AzaMath — библиотека для конвертации между системами счисления (включая кастомные) + удобная арифметика произвольной точности.
Интересные подробности

Ближайшие события

Как я знакомился с Yii

Время на прочтение3 мин
Охват и читатели25K
Недавно передо мной встала задача, для решения которой удобно использовать PHP фреймворк. Изучив доступную информацию, описание, возможности,опрос на хабре (в котором, кстати, сумма опрошенных равна не 100%, а 143% (?)) был выбран Yii. Меня этот фреймворк устроил наличием необходимых фич, таких как авторизация и капча. На официальном сайте написано:
Yii — это высокоэффективный, основанный на компонентной структуре PHP-фреймворк для быстрой разработки крупных веб-приложений. Он позволяет максимально применить концепцию повторного использования кода и может существенно ускорить процесс веб-разработки.

Однако моё знакомство с Yii, которое началось с красивых формочек для генерации кода, быстро перешло к копанию в исходниках.
Читать дальше →

SXB: инкрементальный бэкап MySQL

Время на прочтение4 мин
Охват и читатели17K
Эта статья является продолжением статьи Разрабатываем новый формат файла для бэкапа сайтов, в которой рассматривался перспективный формат для бэкапа сайтов.

В этой статье мы рассмотрим вторую часть формата — возможность блочного инкрементального бэкапа для MySQL.

Формат SXB предназначен для пользователей начального и среднего уровня. Для тех, кто не знаком (или не может использовать их на конкретном сайте) со средствами горячего бэкапа (бинарные логи, снимки файловой системы, Xtrabackup и т.п.). Грубо говоря, для тех, кто для бэкапа MySQL использует mysqldump и подобные программы, создающие SQL-дамп базы.

Сразу напомню, что формат пока на стадии отработки технологии, и в конце статьи вас ждет тестовый PHP-скрипт.
Читать дальше →

Автоматизированный рефакторинг в большом проекте

Время на прочтение19 мин
Охват и читатели18K
Если вы работаете в большой команде разработчиков над одним и тем же проектом, то рефакторинг становится очень сложной задачей. Приведем пример: мы хотим переименовать функцию do_something() в do_something_with_blackjack(). Мы переименовали все вхождения этой функции в своей ветке и отправили задачу на тестирование. В тот же момент кто-то другой добавил ещё один вызов функции, но со старым названием, тоже в своей ветке. По отдельности наборы изменений будут работать, а вот после слияния получится ошибка.

В статье будет рассмотрен приём, который можно назвать «автоматизированный рефакторинг» — использование самописных скриптов, которые делают нужную работу за вас, позволяя провести рефакторинг после слияния всех веток и перед непосредственной выкладкой на staging/production.

На примере phpBB будет показано, как можно «отрефакторить» вызовы SQL-запросов, чтобы они использовали автоматическое экранирование входных данных (и таким образом помочь в решении проблемы SQL-инъекций).
Читать дальше →

Функциональное программирование на PHP

Время на прочтение6 мин
Охват и читатели53K
PHP всегда был простым, процедурным языком программирования, черпавшим свое вдохновение из C и Perl. В PHP 5 появилась правильная объектная модель, но о ней вы уже все знаете. А вот в PHP 5.3 появились замыкания (closure), которые были серьезно улучшены в версии 5.4 (подсказка: $this теперь доступен по умолчанию).
Читать дальше →

Типажи в PHP: хорошо это или плохо?

Время на прочтение4 мин
Охват и читатели24K
Типажи в PHP: хорошо это или плохо?

В марте 2012 года был анонсирован релиз PHP 5.4. В этой версии должно было появиться множество интересных нововведений, так что разработчики ждали его с нетерпением. Пожалуй самой ожидаемой особенностью стали типажи (traits). Еще до релиза, Shameer C написал замечательный обзор возможностей, которые дают нам типажи в PHP. Я настоятельно рекомендую вам ознакомиться с этой статьей, так как моя статья предполагает наличие у вас базовых знаний по типажам и понимание их работы.

Сообщество разработчиков PHP приняло типажи, в основном потому, что они уже были реализованы в других популярных языках программирования, например Java, C++ и Python. Кроме того, преимущества типажей были хорошо разрекламированы разработчиками, которые вставляли свои пять копеек, касательно того, как типажи помогут улучшить любой проект, особенно как замена наследования. Но так ли хороши типажи на самом деле? Помогут ли они повысить уровень PHP разработчиков, или же это просто очередная причуда?
Читать дальше →

Дайджест интересных новостей и материалов из мира PHP за последние две недели №9 (12.01.2013 — 25.01.2013)

Время на прочтение4 мин
Охват и читатели16K


Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.

Приятного чтения!
Читать дальше →

Добавление своего функционала в UMI.CMS при помощи обработчиков событий

Время на прочтение12 мин
Охват и читатели16K
В системе управления сайтами UMI.CMS изначально заложено разделение на основной движок сайта, который не трогается вэб-разработчиком (и который перезаписывается при обновлении системы), и дополнительный (кастомный) функционал, который уже разработчик сайта адаптирует под себя: собственные шаблоны дизайна, макросы (PHP-функции, вызываемые из шаблонов), собственные модули, если необходимо.

Однако, при разработке своего сайта бывают ситуации, когда надо изменить уже существующий функционал сайта:
  • добавить собственную логику импорта данных из XML;
  • выполнить какие-то действия при импорте данных;
  • выполнить какие-то действия при создании или изменении заказа;
  • выполнить какие-то действия по расписанию;
  • … и так далее.

В этом случае приходится либо править системный код движка (что сразу добавляет проблем при обновлении CMS), либо использовать встроенный функционал событий. В документации или на сторонних ресурсах этот вопрос рассмотрен, однако, на мой взгляд, недостаточно подробно. Данная статья является попыткой собрать воедино сведения о работе с событиями в UMI.CMS, а также на основе примера показать, как при помощи обработки событий можно расширить функционал системы.
Читать дальше →