Многие фреймворки любят магию и сложные многоуровневые массивы для передачи параметров. Что первое, что второе — зло с точки зрения истинно-ленивого программера, который любит IDE и доки всегда под рукой, а не тыкать в интернет/тело вызываемого метода. Мы можем победить это, как образец взяв параметры метода из одного фреймворка и создав ООП-билдер.
Читать полностью »
Рубрика «php» - 210
ООП-билдер «массивных» параметров
2013-01-13 в 15:15, admin, рубрики: oopconfig, php, конфигурация, ооп, Совершенный код, совершенствование, фреймворки php, метки: oopconfig, PHP, конфигурация, ооп, совершенствование, фреймворки phpДайджест интересных новостей и материалов из мира PHP за последние две недели №8 (29.12.2012 — 11.01.2013)
2013-01-11 в 19:00, admin, рубрики: codeception, composer, DiC, doctrine, laravel, php, symfony, yii, Блог компании Zfort Group, Веб-разработка, дайджест, Новости, подборка, ссылки, метки: codeception, composer, DiC, doctrine, laravel, PHP, symfony, yii, Веб-разработка, дайджест, новости, подборка, ссылки
Новогодние праздники подходят к финишу, и мы снова в строю со свежей порцией новостей и материалов из мира PHP.
Приятного чтения!
Читать полностью »
Избавляемся от дублирования сквозного кода в PHP: рефакторинг кода с АОП
2013-01-10 в 9:40, admin, рубрики: aop, aspect oriented programming, php, Веб-разработка, Программирование, метки: aop, aspect oriented programming, PHPДумаю, каждому программисту знаком принцип единственной ответственности, ведь не зря он существует: соблюдая его, можно написать код лучше, он будет более понятным, его будет легче дорабатывать.
Но чем больше каждый из нас работает с кодом, тем больше приходит понимание того, что на существующем уровне языка — объектно-ориентированном — этого сделать невозможно. А мешает нам в соблюдении принципа единственной ответственности такой факт, как сквозная функциональность.
Эта статья о том, как можно избавиться от дублирования сквозного кода, и как сделать его чуточку лучше с помощью АОП.
Руководство по использованию Dependency Injection в Symfony2
2013-01-09 в 15:13, admin, рубрики: dependency injection, php, symfony, Веб-разработка, метки: dependency injection, PHP, symfonyВ данной статье приводится пример создания простого сайта-блога с использованием паттерна Dependency Injection. Применяется подход с внедрением зависимостей во все возможные компоненты Symfony: контроллеры, doctrine-репозитории, формы.
Для упрощения статьи сократим число страниц сайта до двух:
- Добавление нового поста (/add)
- Отображение списка всех постов (/list)
Финальная архитектура приложения будет выглядеть следующим образом:
Читать полностью »
Как же работают транзакции в Redis
2013-01-09 в 12:29, admin, рубрики: nosql, php, redis, rediska, Веб-разработка, транзакции, метки: PHP, redis, rediska, транзакцииРаботаю с Redis относительно недавно и вот возникла необходимость изменения одного ключа несколькими потоками одновременно. Для работы с Redis в php использую клиент Rediska. Еще когда читал мануал по Rediska видел раздел про транзакции, а сегодня пришло время почитать внимательнее.
PHP класс для удобной и безопасной работы с MySQL
2013-01-08 в 15:51, admin, рубрики: mysql, mysqli, php, placeholder, prepared statements, информационная безопасность, метки: mysqli, placeholder, prepared statements, sql-injection После написания статьи про защиту от инъекций я взялся за написание класса, реализующего изложенные в ней идеи.
А точнее, поскольку ключевой функционал уже использовался в рамках рабочего фремворка, я занялся выделением его в самостоятельный класс. Пользуясь случаем, хочу поблагодарить участников PHPClub-а за помощь в исправлении нескольких критических ошибок и полезные замечания. Ниже я постараюсь описать основные особенности, но сначала небольшой
В двух словах, класс строится вокруг набора функций-хелперов, позволяющих выполнять большинство операций с БД в одну строку, обеспечивая при этом полную защиту от инъекций.
При его написании я следовал трем базовым принципам:
- Безопасность
- Удобство и краткость кода приложения
- Универсальность, портабельность и простота освоения
Остановлюсь чуть подробнее на каждом из пунктов.
Читать полностью »
Индексный доступ к Multibyte-строкам на PHP или изучение ООП на практике
2013-01-08 в 14:22, admin, рубрики: php, ооп, метки: PHP, оопПредыстория: вот, кажется, совсем недавно фирма, в которой я трудился Delphi программистом, издала последний вздох и развалилась. Юридически возможно и нет, но большое число сотрудников начало искать себе новое место работы, в том числе и я. Не буду дискутировать на счет востребованости сейчас desktop подхода, да и актуальности Delphi, но я решил воспользоваться сложившейся ситуацией для смены рода деятельности. А именно изучив предложения по трудоустройству в моем регионе (мелкий областной центр) я решил стать Web разработчиком на PHP. И в итоге мои НГ праздники прошли больше за книгой, нежели за праздничным столом.
Почти сразу я столкнулся с ситуацией меня немного смутившей: как язык, на котором крутится большинство сайтов интернета, в оном уже определилось абсолютное преимущество UTF-8, не имеет более-менее вменяемой его поддержки. Прочитав о стандартном методе решения – расширении mb_strings я успокоился, но некоторое неудобство в использовании оставило свой осадок. А именно: отсутствие метода доступа к символу как элементу массива и аналогов ряда стандартных функций в их мультибайт аналогах. Но задерживаться было нельзя, я и дальше штудировал литературу и по разным вопросам обращаясь к Google, но постоянно натыкался на топики начинающих о неудобстве работы с мультибайт строками и ожидании PHP6. Честно говоря, они мне даже поднадоели. Если в прямом виде аналогов в mb_strings нет, но все необходимое для собственной реализации было.
Читать полностью »
Дело было вечером, echo «было нечего»
2013-01-07 в 20:11, admin, рубрики: php, ненормальное программирование, особенности, метки: PHP, ненормальное программирование, особенностиДобрый день хабр. В статье я расскажу, как используя синтаксис php, можно написать функцию, для вывода переданной ей строковой переменной, не использующую в своем теле символы «a-zA-Z0-9<>?»
Вообще на хабре уже проскальзывали ссылки на статьи об использовании undefined variable, так что ничего нового я скорее всего не открою.
Читать полностью »
Разбираемся с REST API Prestashop
2013-01-06 в 23:40, admin, рубрики: api, php, prestashop, rest, Веб-разработка, метки: api, prestashop, rest, tutorial
На днях была получена задача сделать импорт товаров в Prestashop. С данной CMS дела ранее не имел, а посему стал искать привычные API для добавления/изменения товаров. Каково же было мое удивление когда я их не нашел, ну или не сильно искал. Решение описанное здесь не подходило однозначно, так как требовалась работа с комбинациями товара, и кучей других параметров. Замечу что вариант изменения файлов ядра или создания кучи файлов переопределяющих системные классы были отброшены сразу. И тут я обратил внимание на REST API, оно как я понял появилось недавно, и информации по нему мало, но это показалось мне лучшим вариантом. Замечу что в данном материале я не ставлю цель повторить описанное в документации, а лишь упорядочить информацию и дополнить некоторые моменты.
Читать полностью »
Мой первый скрипт по разгадыванию капчи
2013-01-06 в 14:34, admin, рубрики: php, капча, Песочница, почта, скрипт, метки: капча, почта, скриптПредисловие:
Есть у меня один знакомый который держит интернет магазин. Балует меня иногда довольно-таки нестандартными задачами в программировании. Всё началось с того что, подумав, он решил что для его пользователей — будет очень удобно получать информацию о том где сейчас его посылка (товары с магазина он отправляет почтой России). Благо на сайте почты есть функция слежения за отправлением.
На странице достаточно ввести номер трекера и информация о посылке появляется на экране в виде аккуратной таблички. Не долго думая, я вооружился функцией curl и за пару минут приготовил легкий скрипт — который парсил эту информацию и выводил последнее местоположение посылки (статус: «Прибыло в место вручения» или «Вручение адресату» — давал команду скрипту отправить покупателю смс о том что он может забирать свою посылку).
Читать полностью »