Опыт получения ZCPE-2017

Достаточно давно я зарился на звание сертифицированного php-специалиста и вот свершилось. Я наконец получил свой сертификат.

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

А теперь немного о том, как это было.

Читать далее “Опыт получения ZCPE-2017”

Sonata Import Bundle

До сих пор самой лучшей админ-панелью для Symfony является SonataAdminBundle, и не зря. Простая установка, конфигурация, множество фич “из коробки” и большое сообщество.

В сети лежит множество реализаций импорта для Sonata, но везде есть небольшие недочеты — возможность импорта только текстовых полей, а не сущностей, не работает с коллекциями, проблематично грузить огромные базы, которые могут обрабатываться не один час…

Сегодня я хочу вам представить свою реализацию, которой успешно пользуюсь уже достаточно долго, но только сейчас руки дошли все это причесать и оформить в отдельный bundle.

image
Читать далее “Sonata Import Bundle”

Водные знаки на PDF средствами PHP

В прошлой статье я писал о своем интернет магазине. Статья получилась, сразу скажем, ниочем – типа “я пиарюсь”. Ну, наверное, у нее и не было другого предназначения, но зато в ней я пообещал рассказать как можно легко защищать свои pdf файлы. Сегодня речь пойдет именно об этом.

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

Например водными знаками.

Читать далее “Водные знаки на PDF средствами PHP”

PHP тесты и их бесполезность

На днях я решил вспомнить старый добрый фриланс, и поискать какие-нибудь заказы. Деньги лишними не бывают, а времени это отнимает не так уж и много. Из-за возраста аккаунта, и наличия положительных отзывов за работой дело не встало, я списался с заказчиком, и он, для того чтобы удостовериться в моих способностях, дал мне небольшое задание – собственно вот оно

“Очередной дебильный тест для разработчиков”. По другому его сложно назвать, да и вопросы там такие, что большинство из них знает только человек который только что прочитал книгу “PHP за 21 день”.

Ну серьезно – например “Кто изобрел радио?”. Как это вообще связано с PHP? Или кучка теоретических вопросов – “Сколько параметров может принимать функция strpos?”. Да откуда я знаю? Если мне нужно будет узнать сколько там параметров, то я просто напросто гляну в мануал.

После того как тест был пройден, мне выдали соответствующую картинку, ссылку на которую я могу разместить в блоге / похвастаться перед кем либо / распечатать и подтереться ей (нужное подчеркнуть)

Читать далее “PHP тесты и их бесполезность”

PHP 7. Краткий обзор

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

В этой статье я хочу кратко рассмотреть особенности 7 версии, и разобраться что в ней хорошего, а что плохого.

Ну что ж, тогда сразу приступим к делу.
Первая из фич, о которых я хочу рассказать – это производительность.

Читать далее “PHP 7. Краткий обзор”

Отправка файлов посредством cURL

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

В принципе на статью это даже и не тянет – просто небольшой рецептик.

Все очень и очень просто. cURL может отправлять локальные файлы, и для этого перед полным путем к файлу нужно поставить “@“.
И все.
После этого cURL передаст его в массив $_FILES и с ним можно будет производить все действия.

Читать далее “Отправка файлов посредством cURL”

Массивы и итераторы (часть 2)

В прошлой части мы поговорили вкратце об итераторах – о том как и зачем ими пользоваться.
В этой части я расскажу как он устроен изнутри, как написать свой итератор, и о разных типах и множестве возможностей этого чудесного инструмента.

Итератор это интерфейс от которого мы наследуемся – вот он.

interface Iterator extends Traversable {
    abstract public mixed current ( void )
    abstract public scalar key ( void )
    abstract public void next ( void )
    abstract public void rewind ( void )
    abstract public boolean valid ( void )
}

Разберемся поподробнее зачем нужна каждый из этих методов.

Читать далее “Массивы и итераторы (часть 2)”

Массивы и итераторы (часть 1)

С массивами в программировании невозможно не столкнуться. Они – огромная и очень полезная часть любого кода.

Сегодня речь пойдет об итераторах.

“Итератор (от англ. iterator) — объект, абстрагирующий за единым интерфейсом доступ к элементам коллекции. Итератор иногда также называют курсором, особенно если речь идет о базе данных. В Обероне он называется также бегуно́к и представлен как тип данных. В простейшем случае итератором в низкоуровневых языках является указатель.”
(c) Wikipedia

То есть итератор представляет из себя список чего либо, и с помощью итератора мы можем проходить по этому списку и выбирать нужные значения.
Он работает немного не так как простые массивы – он просто перемещает указатель и забирает то значение на которое указывает текущий указатель.

Но зачем?

Читать далее “Массивы и итераторы (часть 1)”

Тестовое задание – ZOON.ru (часть 2)

В прошлой статье мной описывалось одно очень интересное тестовое задание

Если вы не ознакомились с первой статьей, то самое время это сделать здесь

Я показал само тестовое задание (простая ссылка) и благодаря некоторым усилиям я получил описание и само тестовое задание.
В прошлой статье я обещал рассказать как его делал и привести примеры кода.

Для самых нетерпеливых – github

Читать далее “Тестовое задание – ZOON.ru (часть 2)”

Тестовое задание – ZOON.ru (часть 1)

Однажды, бороздя просторы интернета в поисках разных интересных статей, я наткнулся на достаточно нетривиальное тестовое задание.


Задание от компании zoon.ru

Собственно само задание находится здесь – zoon.ru/job.php.
Дана только одна ссылка и все – никакого описания, ничего подобного.

Читать далее “Тестовое задание – ZOON.ru (часть 1)”