Статьи

Sourcehunt сентябрь — издание Hacktoberfest

Это снова время года — Hacktoberfest от DigitalOcean начинается !

Это месячная работа с открытым исходным кодом, когда людям предлагается участвовать в различных проектах с открытым исходным кодом (не своих!). Каждый, кто откроет 4 запроса на извлечение (даже количество исправлений документации!), Получит футболку в конце месяца, что символизирует их участие в сообществе открытого исходного кода.

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

Если вы хотите принять участие, почему бы не выбрать некоторые проекты из списка, который мы составили в этом месяце? И если это не щекочет ваше воображение, почему бы не посетить PHP-тег sourcehunt и посмотреть, сможете ли вы найти что-то более интересное?

Давайте погрузимся в!

Sourcehunt логотип


код / ​​почта [3 ★]

Так же, как мы опубликовали наш пост Fighting Recruiter Spam с PHP , используя Swiftmailer для отправки ответов, Kodus был представлен Sourcehunt.

Kodus / mail — это совершенно новый пакет альфа-уровня, разработанный для того, чтобы сделать отправку писем в формате UTF-8 еще проще, и в то же время пропускать весь старый багаж, который тащит за собой Swiftmailer (автозагрузка старой школы, соглашения об именах и т. Д.). Как говорит автор, цель состоит в том, чтобы «начать с современного PHP и ограниченного объема возможностей с точки зрения простоты».

Вот ваш шанс попасть на первый этаж очень многообещающего проекта!


voku / Arrayy [20 ★]

Arrayy — это очень мощный и универсальный объектно-ориентированный интерфейс для манипулирования массивами. Как сказано в вступлении README:

Arrayy::create(['Array', 'Array'])->unique()->append('y')->implode() // Arrayy

Это только одна из почти бесконечного числа возможных цепочек операций, которые предоставляет Arrayy. Другие способы использования включают в себя такие вещи, как:

createFromString (строка $ str): массив (неизменяемый)

Создайте новый объект Arrayy через строку.

 $arrayy = A::createFromString(' foo, bar '); // Arrayy['foo', 'bar']
append (смешанное значение $): Arrayy (Mutable)

Добавить значение в текущий массив.

псевдоним: «Arrayy-> add ()»

 a(['fòô' => 'bàř'])->append('foo'); // Arrayy['fòô' => 'bàř', 0 => 'foo']
containsCaseInsensitive (string $ value): логическое значение

Проверьте, находится ли (без учета регистра) строка в текущем массиве.

 a(['E', 'é'])->containsCaseInsensitive('É'); // true
каждый (Закрытие $ закрытие): Массив (Неизменный)

Выполните итерацию по текущему массиву и измените значение массива.

 $result = A::create();
$closure = function ($value) {
  return ':' . $value . ':';
};
a(['foo', 'bar' => 'bis'])->each($closure); // Arrayy[':foo:', 'bar' => ':bis:']
найти (закрытие $ закрытие): смешанный

Найдите первый элемент в массиве, который проходит проверку на истинность, в противном случае верните false.

 $search = 'foo';
$closure = function ($value, $key) use ($search) {
  return $value === $search;
};
a(['foo', 'bar', 'lall'])->find($closure); // 'foo'
randomWeighted (массив $ array, int | null $ take): массив (неизменяемый)

Получить случайное значение из массива с возможностью искажать результаты.

 a([0 => 3, 1 => 4])->randomWeighted([1 => 4]); // e.g.: Arrayy[4] (has a 66% chance of returning 4)
searchValue (смешанный индекс $): массив (неизменяемый)

Поиск значения текущего массива с помощью $ index.

 a(['fòô' => 'bàř'])->searchValue('fòô'); // Arrayy[0 => 'bàř']
toJson (): строка

Преобразовать текущий массив в JSON.

 a(['bar', array('foo')])->toJson(); // '["bar",{"1":"foo"}]'

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


voku / portable-utf8 [76 ★]

Портативный utf8, созданный тем же человеком, который создал вышеупомянутый пакет Arrayy, является реализацией UTF-8 в PHP без каких-либо предварительных условий расширения. Другими словами, независимо от того, установлены ли на вашем сервере UTF-8-совместимые расширения, UTF-8 будет включен на вашем сервере. Если расширения отсутствуют, будут использованы полифилы от Symfony.

Я позволю разделу «почему» рассказать, почему это существует:

PHP 5 и более ранние версии не имеют встроенной поддержки Unicode. Чтобы преодолеть разрыв, существует несколько расширений, таких как «mbstring», «iconv» и «intl».

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

Важно отметить, что если вы уже используете в своем приложении некоторые специфичные для UTF-8 функциональные возможности, переход на этот пакет не так прост, поскольку он не является заменой. Из-за характера пакета также следует иметь в виду, что он станет жесткой зависимостью. Тем не менее, учитывая достигнутые результаты, оно того стоит.

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


php-интегратор / atom-base [168 ★]

PHP-интегратор — это пакет Atom, который помогает с линтовкой кода — т.е. добавляет многие полезные функции автозавершения кода и хинтинга кода от PhpStorm до Atom.

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

Он может использовать некоторые дополнительные функции на стороне Atom, но он также может использовать одну или две развилки, превращая его в независимый от редактора пакет, который может быть легко применен к любой другой IDE. Другая идея — почему бы не заставить его работать с Docker «из коробки», помогая людям избежать необходимости устанавливать PHP на свои операционные системы? Нырнуть в!


florianv / обменник [7 ★]

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

Одной из интересных реализаций этого «фреймворка» является популярный пакет Swap того же автора.

В то время как оба пакета являются достаточно зрелыми, Exchanger может использовать немного больше любви.

Кстати, если вам интересно написать об Exchanger и продемонстрировать мощь фреймворка, свяжитесь с нами — мы ищем!


rinvex / страна [383 ★]

Как сказано в описании:

Rinvex Country — это простой и легкий пакет для гибкого извлечения сведений о стране. Целая куча данных, включая имя, имя и фамилию, прописные, изо-коды, телефонные коды, геоданные, валюты, флаги, смайлики и другие атрибуты для всех 250 стран мира в ваших руках.

Пример:

 use Rinvex\Country\Models\Country;

// Find a country by it's ISO 3166-1 alpha-2
$egypt = (new Country)->find('EG');

// Find a country by one of it's attributes
$usa = (new Country)->findBy('capital', 'Washington D.C.');

// Find all countries
$countries = (new Country)->findAll();

// Retrieve only `name`, `demonym`, and `currency` attributes of "Japan":
$japan = (new Country)->find('JP', ['name', 'demonym', 'currency']);

// Utilize Laravel Collections to get an array of all country names, with their 'iso_3166_1_alpha2' as the array keys
$allCountries = (new Country)->findAll()->pluck('name.common', 'iso_3166_1_alpha2');

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

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


ScriptFUSION / Mapper [7 ★]

Я, честно говоря, понятия не имею, что это такое или для чего я буду его использовать, но Окрамиус похвалил меня, поэтому я включил его в список.

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


lufficc / laravel-blog [164 ★]

Система блогов Laravel 5.3! Судя по отзывам, это довольно хорошо, но определенно может использовать больше возможностей. Почему бы не вмешаться и помочь?

Дайте нам знать, если вы это сделаете — мы хотели бы тщательного анализа!


Corollarium / PSR6-ProfileCachePool / [9 ★]

Используете ли вы кэш PSR-6? Если это так, вас может заинтересовать этот профилировщик, который отслеживает, сколько попаданий и пропусков получает ваша реализация кеша. Это не очень полезно, если вы не заметили некоторые несоответствия и хотите отладить, но это здесь, если вам это нужно!

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


Вот и все на сентябрь — как всегда, пожалуйста, напишите нам свои ссылки с хэштегом #sourcehunt ! Теперь иди и взломай Hacktober! Дайте нам знать, что вы сделали и счастливого кодирования!