首页 >后端开发 >php教程 >SourceHunt 9月-Hacktoberfest版本

SourceHunt 9月-Hacktoberfest版本

Joseph Gordon-Levitt
Joseph Gordon-Levitt原创
2025-02-10 12:46:09824浏览

参与 DigitalOcean 的 Hacktoberfest,为开源项目贡献力量!

Sourcehunt September - Hacktoberfest Edition

活动亮点:

  • DigitalOcean 的 Hacktoberfest 开启,鼓励大家为各种开源项目贡献代码。完成 4 个 pull request 即可获得一件 T 恤,以此表彰对开源社区的贡献。
  • 推荐参与的项目包括:简化 UTF-8 邮件发送的 Kodus/mail 包;面向对象的数组操作接口 voku/Arrayy;以及辅助代码静态检查的 Atom 插件 php-integrator/atom-base。
  • 其他值得参与的项目还有:货币兑换框架 florianv/exchanger;国家信息检索包 rinvex/country;以及缓存命中率分析工具 Corollarium/PSR6-ProfileCachePool。

一年一度的 DigitalOcean Hacktoberfest 又来了!

这是一个为期一个月的开源活动,鼓励大家为各种开源项目(非自身项目)贡献代码。提交 4 个 pull request(即使是文档修正也计入!)即可在月底获得一件 T 恤,以此象征着您对开源社区的贡献。

当然,开源远不止一个月的时间,但对于那些通常不花时间为其他开发者项目做贡献的人来说,这是一个非常好的开始。

如果您想参与,不妨从我们本月整理的项目列表中选择一些项目。如果您对这些项目不感兴趣,可以访问 Sourcehunt 的 PHP 标签,看看是否能找到更感兴趣的项目。

让我们开始吧!

Sourcehunt September - Hacktoberfest Edition


kodus/mail [3 ★]

在我们发布了《使用 PHP 和 Swiftmailer 应对招聘垃圾邮件》文章后,Kodus 就被提交到了 Sourcehunt。

Kodus/mail 是一个全新的 alpha 级包,旨在使 UTF-8 邮件发送更加简单,同时跳过 Swiftmailer 附带的所有旧式负担(旧式的自动加载、命名约定等)。正如作者所说,其目标是“使用现代 PHP 并限制功能范围,以实现简单性”。

这是您加入一个非常有前景的项目的绝佳机会!


voku/Arrayy [20 ★]

Arrayy 是一个功能强大且用途广泛的面向对象数组操作接口。README 简介如下:

<code class="language-php">Arrayy::create(['Array', 'Array'])->unique()->append('y')->implode() // Arrayy</code>

这只是 Arrayy 提供的近乎无限可能的运算链之一。其他用法包括:

  • createFromString(string $str) : Arrayy (不可变) 通过字符串创建新的 Arrayy 对象。
<code class="language-php">Arrayy::create(['Array', 'Array'])->unique()->append('y')->implode() // Arrayy</code>
  • append(mixed $value) : Arrayy (可变) 向当前数组追加值。别名:“Arrayy->add()”
<code class="language-php">$arrayy = A::createFromString(' foo, bar '); // Arrayy['foo', 'bar']</code>
  • containsCaseInsensitive(string $value) : boolean 检查(不区分大小写)字符串是否在当前数组中。
<code class="language-php">a(['fòô' => 'bàř'])->append('foo'); // Arrayy['fòô' => 'bàř', 0 => 'foo']</code>
  • each(Closure $closure) : Arrayy (不可变) 迭代当前数组并修改数组的值。
<code class="language-php">a(['E', 'é'])->containsCaseInsensitive('É'); // true</code>
  • find(Closure $closure) : mixed 查找数组中第一个通过真值测试的项目,否则返回 false。
<code class="language-php">$result = A::create();
$closure = function ($value) {
  return ':' . $value . ':';
};
a(['foo', 'bar' => 'bis'])->each($closure); // Arrayy[':foo:', 'bar' => ':bis:']</code>
  • randomWeighted(array $array, int|null $take) : Arrayy (不可变) 从数组中获取随机值,并能够倾斜结果。
<code class="language-php">$search = 'foo';
$closure = function ($value, $key) use ($search) {
  return $value === $search;
};
a(['foo', 'bar', 'lall'])->find($closure); // 'foo'</code>
  • searchValue(mixed $index) : Arrayy (不可变) 通过 $index 搜索当前数组的值。
<code class="language-php">a([0 => 3, 1 => 4])->randomWeighted([1 => 4]); // 例如:Arrayy[4](有 66% 的概率返回 4)</code>
  • toJson() : string 将当前数组转换为 JSON。
<code class="language-php">a(['fòô' => 'bàř'])->searchValue('fòô'); // Arrayy[0 => 'bàř']</code>

…… 还有更多功能。该项目已经存在一段时间了,但尽管经过了充分测试和良好的文档记录,但尚未得到广泛采用,所以让我们希望 Sourcehunt 能有所帮助!


voku/portable-utf8 [76 ★]

与上面的 Arrayy 包出自同一人之手,portable-utf8 是 PHP 中的 UTF-8 实现,无需任何扩展先决条件。换句话说,无论您的服务器是否安装了支持 UTF-8 的扩展,UTF-8 都将在您的服务器上启用。如果缺少扩展,将使用 Symfony 的 polyfills。

我将让“原因”部分告诉您为什么存在这个包:

PHP 5 及更早版本没有原生 Unicode 支持。为了弥补这一差距,存在一些扩展,例如“mbstring”、“iconv”和“intl”。

“mbstring”和其他扩展的问题在于,大多数情况下您无法确保服务器上存在特定的扩展。如果您依赖其中一个,您的应用程序将不再可移植。对于必须在具有不同配置的不同服务器上运行的开源应用程序来说,这个问题变得更加严重。

需要注意的是,如果您已经在应用程序中使用了一些特定于 UTF-8 的功能,那么过渡到这个包并非易事,因为它不是直接替换。由于该包的性质,还值得记住的是它将成为一个硬依赖。尽管如此,考虑到收益,似乎还是值得的。

该包没有未解决的问题或 pull request,也没有定义 TODO,但其测试覆盖率和 Scrutinizer 分数可以改进,因此,如果您希望通过优化测试级别和感知代码质量来贡献,现在就是您的机会。


php-integrator/atom-base [168 ★]

PHP-integrator 是一个 Atom 包,它有助于代码静态检查——即,它将 PhpStorm 中许多有用的代码补全和代码提示功能添加到 Atom 中。

它目前依赖于 Atom,因为它是一个 Atom 包,但其 PHP 代码可以轻松提取并应用于另一个具有使集成成为可能的钩子的编辑器。另一个想法——为什么不使其开箱即用地与 Docker 一起工作,帮助人们避免必须在其主机操作系统上安装 PHP?加入吧!


florianv/exchanger [7 ★]

这个包是一个“货币兑换框架”,这意味着它用于开发货币兑换包。可以把它看作是一个标准,可以帮助您开发您自己可互换的货币兑换包。

这个“框架”的一个有趣的实现是同一作者的流行的 Swap 包。

虽然这两个包都相当成熟,但 Exchanger 可以做得更好。

顺便说一句,如果您有兴趣撰写关于 Exchanger 的文章并演示该框架的功能,请联系我们——我们正在寻找!


rinvex/country [383 ★]

正如描述所说:

Rinvex Country 是一个简单轻便的包,用于灵活地检索国家/地区详细信息。它提供了大量数据,包括名称、人口、首都、ISO 代码、拨号代码、地理数据、货币、标志、表情符号以及全球 250 个国家/地区的其他属性,触手可及。

示例:

<code class="language-php">Arrayy::create(['Array', 'Array'])->unique()->append('y')->implode() // Arrayy</code>

作为目前正在构建两个独立的地理感知应用程序的人,我绝对欣赏这个包——它在处理常见的国家/地区信息方面使事情变得容易得多。

由于其多功能文档和出色的代码质量分数,该库已经拥有相当不错的采用率,但仍然可以使用更多用户和贡献者。你能帮忙吗?你现在也可以解决一些问题!


ScriptFUSION/Mapper [7 ★]

老实说,我不知道这是什么,也不知道我会用它做什么,但 Ocramius 赞扬了它,所以我把它列入了列表。

如果您觉得自己可以向完全的新手解释这是什么,请联系我们,我们会付钱给您写这篇文章。


lufficc/laravel-blog [164 ★]

一个 Laravel 5.3 博客系统!从反馈来看,它相当不错,但肯定需要更多功能。为什么不加入并提供帮助呢?

如果您做到了,请告诉我们——我们非常乐意进行彻底的分析!


Corollarium/PSR6-ProfileCachePool/ [9 ★]

您使用 PSR-6 缓存吗?如果是这样,您可能对这个分析器感兴趣,它监控缓存实现的命中和未命中次数。除非您注意到一些差异并想要调试,否则它并没有什么用,但如果您需要它,它就在这里!

为什么不通过添加更多报告格式(动画图表?)或其他要跟踪的统计信息来为该包做出贡献呢?


这就是九月份的内容——与往常一样,请使用 #sourcehunt 标签向我们发送您的链接!现在,让我们开始 Hacktoberfest 吧!让我们知道您做了什么,祝您编码愉快!

以上是SourceHunt 9月-Hacktoberfest版本的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn