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

imageВ этой статье я хотел бы познакомить читателей с архитектурой весьма интересного open-source (GPL3) проекта EspoCRM на примере создания нового модуля для этой системы.
Что такое CRM-система (Customer relationship management), думаю, многие уже давно знают. Особенность данной CRM-системы в том, что она написана как Single Page Application и поэтому довольно «шустрая».
Простой дизайн и современные технологии программирования многим придутся по вкусу, а быстродействие данной CRM-системы приятно удивит. На сайте доступна демо-версия.
Добиться высокой скорости работы помогло кэширование скриптов и шаблонов в Local Storage. Все view вместе с дочерними собираются в один большой HTML, который отображается на экране у пользователя.
Система имеет мощный API, использующий JSON, а веб-интерфейс по сути является API-клиентом.
Система не перегружена функционалом, но имеет все необходимое, а также неплохо настраивается.
Читать полностью »

ZExt Framework :: Cache

Эта статья описывает использование модуля «Cache» PHP-фреймворка «ZExt».
Модуль отвечает за кеширование данных, получение которых требует существенных затрат времени и ресурсов.

Возможности

  • Поддержка тегов для любых хранилищ
  • Профилирование запросов
  • Гибкая архитектура компонентов позволяющая легко расширять возможности сервиса
  • Фабрика для удобного создания сервиса кеширования из имеющихся компонентов
  • Агрегация с отладочной панелью фреймворка
  • Действия с множествами данных использующие нативные методы систем кеширования

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

Несмотря на то, что Facebook анонсировал XHP еще в феврале 2010 года, до сих пор об этом шаблонизаторе очень мало информации, хотя даже как идея XHP весьма и весьма интересен.

В этой статье я попытаюсь дать краткий обзор XHP, основные плюсы и минусы, а также затрону вопросы производительности.
Читать полностью »

Написать эту статью меня сподвигло отсутствие в интернете готового пошагового руководства «как реализовать фильтр товаров на ElasticSearch», а задача сделать это у меня стояла чётко и непоколебимо. Удавалось находить отрывочную справочную информацию, но никак не cookbook по решению самых тривиальных задач.

Акцентирую ваше внимание именно на symfony2, поскольку буду использовать FOSElasticaBundle, который позволяет описывать mapping индексов elasticsearch в удобных yaml конфигах и привязывать к ним сущности Doctrine ORM или документы Doctrine ODM. Промаппленные индексы заполняются из связанных доктриновских сущностей с помощью одной единственной консольной команды. Кроме того, он включает в себя вендорную библиотеку для конструирования поисковых и фильтрационных запросов. Результаты поиска возвращаются в виде массива объектов сущности или документа Doctrine ORM/ODM, привязанной к поисковому индексу. Подробнее о FOSElasticaBundle, традиционно, на гитхабе: github.com/FriendsOfSymfony/FOSElasticaBundle

Использование бандла позволяет полностью абстрагироваться от манипуляций с чистым JSON, что-то кодировать и декодировать функциями json_encode и json_decode, лезть куда-то с помощью сurl. Здесь только ООП подход!

Немного о схеме данных в SQL

Поскольку мои товары хранятся в реляционной СУБД, мне понадобилось реализовать EAV модель для их свойств и значений (подробнее: en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model )

В результате, у меня вышла вот такая схема данных:
image
Читать полностью »

Инверсия управления (Inversion of Control) — важный принцип объектно-ориентированного программирования, используемый для уменьшения связанности в компьютерных программах (“Википедия”).

Простой как Pimple, мощный как Symfony DI

Syringe — простой IoC Container написанный на PHP с большим количеством возможностей и декларативной конфигурацией.

В нем реализованы: внедрение параметров, фабричные методы, основные виды инъекций, в том числе и через интерфейс, области видимости, внедрение тега и триггеры.

Далее возможности расписаны более подробно.
Читать полностью »

YaLinqo (LINQ to Objects для PHP) — версия 2.0Что-что?

LINQ — это штука, которая позволяет писать запросы, чем-то похожие на SQL, прямо в коде. LINQ to Objects, собственно, позволяет писать запросы к объектам, массивам и всему тому, чем вы оперируете в коде.

Это ещё зачем?

Если у вас есть база, то у вас есть любимый ORM (или любимый голый SQL — кому как по вкусу). Но иногда объекты приходят из веб-сервисов, из файлов, да и вообще тьма тьмущая объектов может требовать нетривиальной обработки: преобразование, фильтрация, сортировка, группировка, агрегация… Применить бы привычный ORM или SQL — но базы-то нет. Тут на помощь приходит LINQ to Objects, в данном случае YaLinqo.

Что умеет?

  • Самый полный порт .NET LINQ на PHP, со многими дополнительными методами. Всего реализовано более 70 методов.
  • Ленивые вычисления, текст исключений и многое другое, как в оригинальном LINQ.
  • Детальная документация PHPDoc к каждому методу. Текст статей адаптирован из MSDN.
  • 100% покрытие юнит-тестами.
  • Коллбэки можно задавать замыканиями, «указателями на функцию» в виде строк и массивов, строковыми «лямбдами» с поддержкой нескольких синтаксисов.
  • Ключам уделяется столько же внимания, сколько значениям: преобразования можно применять и к тем, и к другим; большинство коллбэков принимает на вход и то, и другое; ключи по возможности не теряются при преобразованиях.
  • Минимальное изобретение велосипедов: для итерации используются Iterator, IteratorAggregate и др. (и их можно использовать наравне с Enumerable); исключения по возможности используются родные похапэшные и т.п.
  • Поддерживается Composer, есть пакет на Packagist.
  • Никаких внешних зависимостей.

Что случилось?

Прошёл год, как вышел PHP 5.5 со всякими вкусностями типа генераторов и исправленных итераторов. Так как на моей совести самый полноценный порт LINQ на PHP, то я решил, что настало время его обновить и воспользоваться новыми фичами языка.

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

в 14:37, , рубрики: php

Данным постом хочу представить IT-сообществу свой давний проект: PHP фреймворк «ZExt».

В результате многолетней работы в различных проектах у меня накопилась библиотека, так сказать, всяческих полезностей, облегчающих повседневный труд программиста. Некоторые компоненты данного фреймворка являються частями корпоративного фреймворка компании viboom.ru в которой я проработал продолжительное время создавая эти компоненты. От руководства компании было полученно согласие на публикацию части исходного кода фреймворка. В последнее время я провёл определённую работу по «причёсыванию» фреймворка и теперь готов его представить сообществу в надежде, что вы найдёте чего либо полезное для себя в компонентах фреймворка.
Читать полностью »

imageЧтобы начать делать сайты на YII2, нам понадобится Веб-сервер, PHP 5.4, Git, Composer, знание «ООП в PHP» и АйКью > 103. Надо сказать, это будет не так уж и сложно, но и не просто. Эта статья поможет стартануть проект на YII2 самому дну веб-разработки: «школьникам» и старперам — адептам CodeIgniter. Другие статьи в Интернете либо еще не созданы (стабильной версии YII2 еще нет), либо написаны для тех, кто уже создал тысячу YII1 и сотню YII2 сайтов. Я не такой и статью я буду писать не такую, а простую и понятную, ведь эта статья — мой конспект, который я вел во время изучения YII2. Читать полностью »

Думаю очень многие знают о информерах для сайта от Яндекс.Погоды. Но не всегда нам нужно такое отображение данных, которое даёт нам сам Яндекс. В этом посте я расскажу, как сделать отображение погоды без официальных информеров. Кроме этого, погода будет показываться посетителю Вашего сайта в зависимости от его региона.
Читать полностью »

Вход в web приложение с использованием распознавания лица

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

Наша компания предлагает решения для двухфакторной аутентификации, которые уже можно назвать классическими: одноразовые пароли по SMS, аппаратные ключи и мобильные приложения, генерирующие одноразовые пароли на смартфонах пользователей. Параллельно, мы рассматриваем дополнительные методы «второго фактора», в данном конкретном случае в исключительно научных целях — по вполне понятным причинам.

Итак, представленный ниже метод биометрической аутентификации не рекомендуется для промышленной эксплуатации в качестве замены первого фактора (пароля). Риск при использовании метода в качестве второго фактора существенно меньше, но все еще существует — решайте сами. Я просто расскажу, как и с помощью каких инструментов можно организовать аутентификацию для веб приложения с использованием распознавания и валидации изображения человеческого лица. Аппаратная реализация — обычная web-камера.
Читать полностью »


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