Рубрика «php» - 156

Генерация ID для шардинга в MySQL Тема шардинга довольно обширная как с точки зрения программиста, так и с точки зрения администратора БД. Я сейчас хочу коснуться только вопросов генерации уникального ID сущности и алгоритмов выбора шарда.
Читать полностью »

Иногда в коде приходится использовать строго типизированные параметры, однако сам язык PHP не является строго типизированным (как, например, C#, в котором присутствует такой тип данных, как перечисления – Enum). Однако выход из данной ситуации все равно можно найти. Порывшись по просторам интернета я так и не нашел подходящего мне решения. Предлагаю вам мое решение данной проблемы.

Проблема заключалась в следующем. Необходимо реализовать функцию, которая бы на вход принимала строго типизированный объект (класс), однако в теле функций необходим перебор значений данного класса и сравнение его с предопределенными константами (этого же класса):
Читать полностью »

О пользе модульного подхода в программировании на любом языке говорилось уже достаточно много, по-этому приведу кратко основные положительные моменты для JS особо не вдаваясь в подробности. Разделение приложения на модули позволяет сделать код:

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

Так же документация модульного кода гораздо более эффективна.

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

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

Существует хорошо зарекомендовавшие себя библиотеки способные решить большинство поставленных задач и избежать отрицательных моментов. Одной из наиболее популярных библиотек для написания модульных приложений на яваскрипт является RequireJS. RequireJS хорошо документирована и касаться разработки с ее использованием в этой статье мы не будем. Рассмотрим подробнее как интегрировать RequireJS в Symfony2 с последующей оптимизацией созданных нами модулей. Для подобной цели очень кстати может оказаться HearsayRequireJSBundle, так что, какая проблема, берем бандл инсталлируем через компоузер и все! Возможно у кого-то так и получилось, однако могли возникнуть и некоторые нюансы. Чтобы максимально сгладить процесс знакомства с подобной интеграцией предлагаю прочесть то, что изложено ниже.
Читать полностью »

В продолжении поста о погоде «Яндекс.Погода для сайта в деталях». Прочитав данный пост, я пришел к выводу, что тема еще актуальна, и хотел бы дополнить выше упомянутую статью своими наработками.

И снова Яндекс.Погода для сайта: время суток, направление ветра и прочие параметрыЧитать полностью »

В ряде Symfony-проектов у нас используется hstore. Для тех, кто не в курсе, hstore — это PostgreSQL-модуль, позволяющий сохранять массивы значений в одном поле. Мы накидали отдельны DBAL-тип hstore, а также тип поля hstore для Doctrine ORM, для прозрачного работы с такого рода полями.

Оформлено все в Symfony-бандл IntaroHStoreBundle. Но речь в целом не о бандле. Речь о том, как мы попробовали оптимизировать его с помощью Zephir.Читать полностью »

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

Дабы уменьшить количество расстройств, я решил описать несколько малоизвестных, но весьма полезных функций:

make_clickable
Находит в тексте ссылки и делает их кликабельными.
Пример:

$string = "This is a long text that contains some links like http://www.wordpress.org and http://www.wordpress.com .";
echo make_clickable( $string ); 

popuplinks
Добавляет target='_blank' rel='external' всем ссылкам в тексте.
Пример:

$string = "This is a long text that contains some links like <a href='http://www.wordpress.org'>http://www.wordpress.org</a> and <a href='http://www.wordpress.com'>http://www.wordpress.com</a> .";
echo popuplinks( $string ); 

wp_list_pluck
Достает определенные поля из коллекции.
Пример:

$posts = get_posts();
$ids = wp_list_pluck( $posts, 'ID' ); // [1, 2, 3, ...]

antispambot
Преобразовывает адреса электронной почты в символы HTML, для защиты от спам-ботов.
Пример:

$email = 'example@email.com';
echo '<a href="mailto:' . antispambot( $email ) . '">' . antispambot( $email ) . '</a>';

Читать полностью »

Зачастую возникает необходимость обеспечить поддержку сразу нескольких разных версий PHP на одном сервере хостинга, управляемом панелью ISPmanager. В этой панели поддержки такой функции нет, разработчики неоднократно объясняли почему: http://forum.ispsystem.com/ru/showpost.php?p=48511&postcount=2 Поэтому попробуем устранить этот недостаток самостоятельно.
Читать полностью »

22 августа (пятница) в 18.30 Ciklum Minsk приглашает PHP-разработчиков на открытое мероприятие PHP Developers Speakers’ Corner!
Ciklum Speakers’ Corner — это особый формат открытых мероприятий, способ Ciklum поддерживать и развивать свободный обмен знаниями в различных технологиях и областях среди сотрудников компании и представителей IT-сообществ, а также это отличная возможность для разработчиков находить коллег с общими интересами и расширять свой профессиональный опыт и кругозор.
image Читать полностью »

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

Очень часто веб-разработчики сталкиваются с проблемой большого количества мелких файлов. Картинки, скрипты, css — неудобно, все дела. Нужно как-то бороться с этим. import, спрайты, блаблабла — это хорошо, но можно попробовать и иначе. Мой вариант — упаковка всех необходимых ресурсов в архив на стороне сервера(реализация — на php), получение данных на клиенте, установка ресурсов в нужных местах.

Проблемы на данный момент: не придумал толком, как кешировать полученный архив, таким способом не стоит паковать динамический контент или большие файлы.
Для распаковки архива на клиенте использована библиотека JSZip, для удобства — jQuery.

Читать полностью »

В предыдущей статье мы рассмотрели создание «скелета» для экспорта заказов. В этой же рассмотриим создание такого же скелета, но импорта через REST API.

С Вики: REST (сокр. от англ. Representational State Transfer — «передача репрезентативного состояния») — в более употребительном узком смысле под REST понимается метод взаимодействия компонентов распределённого приложения в сети Интернет, при котором вызов удаленной процедуры представляет собой обычный HTTP-запрос (обычно GET или POST; такой запрос называют REST-запрос), а необходимые данные передаются в качестве параметров запроса. Этот способ является альтернативой более сложным методам, таким как SOAP, CORBA и RPC.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js