SourceHunt 9月-Hacktoberfest版本
参与 DigitalOcean 的 Hacktoberfest,为开源项目贡献力量!
活动亮点:
- 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 标签,看看是否能找到更感兴趣的项目。
让我们开始吧!
kodus/mail [3 ★]
在我们发布了《使用 PHP 和 Swiftmailer 应对招聘垃圾邮件》文章后,Kodus 就被提交到了 Sourcehunt。
Kodus/mail 是一个全新的 alpha 级包,旨在使 UTF-8 邮件发送更加简单,同时跳过 Swiftmailer 附带的所有旧式负担(旧式的自动加载、命名约定等)。正如作者所说,其目标是“使用现代 PHP 并限制功能范围,以实现简单性”。
这是您加入一个非常有前景的项目的绝佳机会!
voku/Arrayy [20 ★]
Arrayy 是一个功能强大且用途广泛的面向对象数组操作接口。README 简介如下:
Arrayy::create(['Array', 'Array'])->unique()->append('y')->implode() // Arrayy
这只是 Arrayy 提供的近乎无限可能的运算链之一。其他用法包括:
createFromString(string $str) : Arrayy
(不可变) 通过字符串创建新的 Arrayy 对象。
Arrayy::create(['Array', 'Array'])->unique()->append('y')->implode() // Arrayy
append(mixed $value) : Arrayy
(可变) 向当前数组追加值。别名:“Arrayy->add()”
$arrayy = A::createFromString(' foo, bar '); // Arrayy['foo', 'bar']
containsCaseInsensitive(string $value) : boolean
检查(不区分大小写)字符串是否在当前数组中。
a(['fòô' => 'bàř'])->append('foo'); // Arrayy['fòô' => 'bàř', 0 => 'foo']
each(Closure $closure) : Arrayy
(不可变) 迭代当前数组并修改数组的值。
a(['E', 'é'])->containsCaseInsensitive('É'); // true
find(Closure $closure) : mixed
查找数组中第一个通过真值测试的项目,否则返回 false。
$result = A::create(); $closure = function ($value) { return ':' . $value . ':'; }; a(['foo', 'bar' => 'bis'])->each($closure); // Arrayy[':foo:', 'bar' => ':bis:']
randomWeighted(array $array, int|null $take) : Arrayy
(不可变) 从数组中获取随机值,并能够倾斜结果。
$search = 'foo'; $closure = function ($value, $key) use ($search) { return $value === $search; }; a(['foo', 'bar', 'lall'])->find($closure); // 'foo'
searchValue(mixed $index) : Arrayy
(不可变) 通过 $index 搜索当前数组的值。
a([0 => 3, 1 => 4])->randomWeighted([1 => 4]); // 例如:Arrayy[4](有 66% 的概率返回 4)
toJson() : string
将当前数组转换为 JSON。
a(['fòô' => 'bàř'])->searchValue('fòô'); // Arrayy[0 => 'bàř']
…… 还有更多功能。该项目已经存在一段时间了,但尽管经过了充分测试和良好的文档记录,但尚未得到广泛采用,所以让我们希望 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 个国家/地区的其他属性,触手可及。
示例:
Arrayy::create(['Array', 'Array'])->unique()->append('y')->implode() // Arrayy
作为目前正在构建两个独立的地理感知应用程序的人,我绝对欣赏这个包——它在处理常见的国家/地区信息方面使事情变得容易得多。
由于其多功能文档和出色的代码质量分数,该库已经拥有相当不错的采用率,但仍然可以使用更多用户和贡献者。你能帮忙吗?你现在也可以解决一些问题!
ScriptFUSION/Mapper [7 ★]
老实说,我不知道这是什么,也不知道我会用它做什么,但 Ocramius 赞扬了它,所以我把它列入了列表。
如果您觉得自己可以向完全的新手解释这是什么,请联系我们,我们会付钱给您写这篇文章。
lufficc/laravel-blog [164 ★]
一个 Laravel 5.3 博客系统!从反馈来看,它相当不错,但肯定需要更多功能。为什么不加入并提供帮助呢?
如果您做到了,请告诉我们——我们非常乐意进行彻底的分析!
Corollarium/PSR6-ProfileCachePool/ [9 ★]
您使用 PSR-6 缓存吗?如果是这样,您可能对这个分析器感兴趣,它监控缓存实现的命中和未命中次数。除非您注意到一些差异并想要调试,否则它并没有什么用,但如果您需要它,它就在这里!
为什么不通过添加更多报告格式(动画图表?)或其他要跟踪的统计信息来为该包做出贡献呢?
这就是九月份的内容——与往常一样,请使用 #sourcehunt 标签向我们发送您的链接!现在,让我们开始 Hacktoberfest 吧!让我们知道您做了什么,祝您编码愉快!
以上是SourceHunt 9月-Hacktoberfest版本的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

会话劫持可以通过以下步骤实现:1.获取会话ID,2.使用会话ID,3.保持会话活跃。在PHP中防范会话劫持的方法包括:1.使用session_regenerate_id()函数重新生成会话ID,2.通过数据库存储会话数据,3.确保所有会话数据通过HTTPS传输。

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

在PHPStorm中如何进行CLI模式的调试?在使用PHPStorm进行开发时,有时我们需要在命令行界面(CLI)模式下调试PHP�...

如何在系统重启后自动设置unixsocket的权限每次系统重启后,我们都需要执行以下命令来修改unixsocket的权限:sudo...

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。
