Статьи

Sourcehunt PHP: участие в криптографии, валидации, платежах…

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

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

Sourcehunt логотип


AsgardCMS [103 ★]

Asgard — это многоязычная модульная платформа CMS с открытым исходным кодом. Несмотря на довольно скучное название и дизайн, его большая точка продажи основана на Laravel 5.1 (версия LTS), а не на 5.0, как подобные проекты.

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

memio / spec-gen [21 ★]

Библиотека генерации кода Memio, о которой мы говорили ранее , имеет дополнительный проект под названием spec-gen — расширение генерации кода для инфраструктуры тестирования PhpSpec.

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

громовержец / шорткод [59 ★]

Если вы когда-либо использовали WordPress не только для публикации сообщений по умолчанию, вы будете знакомы с шорткодами . thunderer / shortcode — это пакет, призванный перенести их в остальной мир PHP.

Теперь вы можете добавить собственные «удобные для граждан» шорткоды в свой собственный движок CMS / app / templating, и дизайнеры и авторы контента получат право работать, не сталкиваясь с вызовами методов и усами ( {{ }}

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

Платформа Blink — это « микро-веб-инфраструктура для создания долгосрочных и высокопроизводительных сервисов […], а также сервер приложений, который может обслуживать запросы напрямую в PHP, без php-fpm или Apache mod_php [… он использует] расширение Swoole. в качестве базовой сетевой библиотеки. «

Перевод: Blink — это еще одно решение в виде долго работающих PHP-серверов, написанных на PHP (например, ReactPHP, AppServer…), но на этот раз со встроенным фреймворком и боевым испытанием на некоторых китайских сайтах с большим трафиком. Расширение Swoole, на которое они ссылаются, представляет собой расширение C для PHP, которое позволяет долго работать приложениям, эффективно предотвращая полную перекомпиляцию и очистку памяти приложения PHP после обработки ответа. Это открывает новые двери для опасности, но здесь неизменность может помочь — обсуждение в другой раз. Дополнительные пояснения можно найти в этой ветке Reddit .

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

Агент [662 ★]

Агент помогает вам узнать информацию об агенте пользователя. Больше нет необходимости в ручном разборе строк UA, чтобы выяснить, находится ли посетитель на мобильном, настольном компьютере, Firefox или Safari — агент позаботится обо всем этом с очень удобным интерфейсом.

Это простой инструмент, но он найдет дом во многих проектах. Несмотря на то, что он уже очень популярен (вроде как взорвался в Reddit), он все же может использовать некоторые материалы

PHP Humanizer [915 ★]

Humanizer делает ценности, которые могут быть прочитаны только разработчиками, более дружественными к гражданским. Смотрите этот пример:

 use Coduo\PHPHumanizer\String;

echo String::humanize('field_name'); // "Field Name"
echo String::humanize('user_id'); // "User"
echo String::humanize('field_name', false); // "field name"

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

Частица / валидатор [79 ★]

Particle / Validator — чрезвычайно простая реализация общепринятых методов проверки, недавно была помечена как версия 2.0 и ищет ранних пользователей и участников. Проверка так же проста, как:

 $v = new Validator;

$v->required('user.first_name')->lengthBetween(2, 50)->alpha();
$v->required('user.last_name')->lengthBetween(2, 50)->alpha();
$v->required('newsletter')->bool();

$result = $v->validate([
    'user' => [
        'first_name' => 'John',
        'last_name' => 'D',
    ],
    'newsletter' => true,
]);

$result->isValid(); // bool(false).
$result->getMessages();
/**
 * array(1) {
 *     ["user.last_name"]=> array(1) {
 *         ["Length::TOO_SHORT"]=> string(53) "last_name is too short and must be 2 characters long."
 *     }
 * }
 */

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

pascaldevink / shortuuid [119 ★]

shortuuidэто простая библиотека php, которая генерирует краткие, однозначные, URL-безопасные UUID.

Существует множество аргументов против последовательных идентификаторов в URL, особенно в дизайне API, поэтому скрывать их с помощью уникальных строк, удобных для URL, имеет смысл.

Библиотека очень проста в использовании и очень однозначна в том, что касается похожих символов, так что, например, похожие символы, такие как l, 1, I, O и 0, полностью опущены и не могут быть опечатка.

винкла / восхождение [218 ★]

Как вы проверяете наличие новых версий ваших пакетов Composer? Запустить composer update Есть ли пробежки?

Climb сканирует ваш проект и перечисляет более новые версии зависимостей, чем тот, который позволяет ваш composer.json

 alt-three/logger                1.0.2      →     1.1.0
graham-campbell/exceptions      5.0.0      →     5.1.0
jenssegers/optimus              0.1.4      →     0.2.0
vinkla/hashids                  1.1.0      →     2.2.0

flashtag / subsplit-service [218 ★]

Вы когда-нибудь задумывались, как эти большие проекты, такие как Zend или Symfony, разделяют свои компоненты в под-репозитории только для чтения? Например, компонент Symfony Yaml является репо компонента только для чтения, но его также можно найти в основной платформе .

Некоторые команды взломали вместе решения, которые автоматизируют это , но subplit-сервис Flashtag поднимает его на новый уровень, подключаясь к веб-зацепкам github или вызываясь cronjobs. Использование довольно просто, когда вы являетесь целевой аудиторией инструмента, и мы планируем углубленный взгляд на инструмент и сравнение с альтернативами в ближайшее время. Будьте на связи!

Payum [503 ★]

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

Это платежный процессор для Paypal, Stripe, Omnipay и многих других сервисов, легко интегрируемый с любой библиотекой и инфраструктурой, имеющий согласованный и хорошо протестированный API и довольно обширные документы.

Payum недавно достиг версии 1.0.0 и мог использовать вашу помощь в тестировании, чтобы помочь в решении некоторых проблем и PR. Если вы не можете помочь с кодом, мы рекомендуем вам помочь с документацией, поскольку английский (довольно очевидно) не является родным языком команды.

Бернард [389 ★]

Бернард для механизмов очереди заданий то же, что HTTPlug для HTTP-клиентов в PHP

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

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

Paragonie / Halite [125 ★]

Halite — это высокоуровневый криптографический интерфейс, который использует libsodium для всех основных операций криптографии.

Halite зависит от превосходного libsodium (поэтому он и его дополнение к PHP являются предварительными условиями) и обеспечивает симметричное и асимметричное шифрование и аутентификацию. Например, вот как можно зашифровать / расшифровать файл:

 <?php
use \ParagonIE\Halite\File;
// Encrypt a file with symmetric-key cryptography
File::encrypt($inputFile, $outputFile, $encryption_key);

// Decrypt a file with symmetric-key cryptography
File::decrypt($inputFile, $outputFile, $encryption_key);

// Encrypt a file with asymmetric-key cryptography
File::seal($inputFile, $outputFile, $enc_public);

// Decrypt a file with asymmetric-key cryptography
File::unseal($inputFile, $outputFile, $enc_secret);

// Get the checksum of a file
$checksum = File::checksum($filename);

// Get the cryptographic signature of a file's checksum
$signature = File::sign($filename, $sign_secret);

// Verify the authenticity of a digitally signed file
$valid = File::verify($filename, $sign_public, $signature);

Это может быть немного неясно, если вы не очень заботитесь о безопасности, поэтому в ближайшие недели мы подготовим для вас соответствующее руководство по Halite, посвященное реальному варианту использования. Мы думаем, вам понравится.


Вот и все для Sourcehunt этого месяца! Если вам сложно найти проекты, в которые вы могли бы внести свой вклад, пожалуйста, перечитайте список выше и посмотрите, не кажется ли вам что-нибудь интересным. Дайте нам знать, если вы отправите PR или два, и мы расскажем о них в следующем Sourcehunt, когда мы сообщим об активности!

Чтобы предложить проекты, которые вы хотели бы видеть в этом списке в следующем месяце, просто выкрикните твиты с хэштегами #sourcehunt и #php — вот ссылка на комбинацию . Естественно, если вы хотите найти проект, написанный на другом языке, измените его соответствующим образом.