gtmassey/thread

一个不依赖于框架的辅助库,用于在PHP中轻松操作字符串。

v0.2-alpha 2023-12-08 20:29 UTC

This package is auto-updated.

Last update: 2024-09-25 18:58:34 UTC


README

Latest Version on Packagist Tests Total Downloads

PHP字符串操作的包装类。

再也不用翻阅PHP字符串函数文档了!

开发者的话

此包仍在活跃开发中,尚未经过全面测试,也不适合生产使用。此版本是alpha版本(充其量),在v1完整版本发布之前,您可能遇到一些破坏性更改。如果您有任何功能建议,请随时打开一个问题或拉取请求。

谢谢,

Garrett

我已经使用PHP超过...10年了,我一直讨厌现有的字符串函数。它们当然很多,如果您知道正则表达式,您可以用它们做很多事情,但它们不是很直观,命名约定也很...糟糕。

Laravel的字符串辅助类是一个向正确方向迈出的巨大飞跃(在我看来),但它被Laravel框架包裹起来,虽然您可以在Laravel之外使用它,但我更愿意看到一个专门的第三方库,它是框架无关的。

Thread是一个框架无关的,以静态方法为重点的包装类,用于在PHP中轻松操作字符串。不再需要调用随机函数并寄希望于最好的结果。相反,创建一个新的Thread对象,并通过链式方法以优雅流畅的方式操作底层字符串。

为什么是Thread?

最初,我想把这个包叫做"Thread",但在开发alpha版本的时候,我偶然发现了PHLAK/Thread包,它实现了我试图做的事情,而且做得很好。

因此,而不是从我的农业背景中寻找文字游戏(Thread是字符串的同义词,也是我们在农场上用于一切的工具),我决定从我的母亲缝纫和拼布爱好中寻找文字游戏。所以,从计算机科学中的“字符串”遇见从纤维艺术中的“线”。

不要与CPU上运行的“线程”混淆……那是完全不同的事情。

此外,“字符串”是PHP中的保留词,所以我无论如何都不能使用它。

安装

您可以通过composer安装此包

composer require gtmassey/thread

使用

入门

此包是一个简单的PHP包,因此您可以在任何PHP项目中使用它。只需将其添加到您的使用语句中,即可开始使用。

use Gtmassey\Thread\Thread;

如果您正在使用Laravel,则ThreadServiceProvider会自动为您注册Thread外观。您可以在代码中使用外观,如下所示

use Thread;

现在您可以使用Thread::make()方法从一个字符串或数组创建一个新的Thread对象。

如果您正在使用Symfony,您可以直接使用Thread类,或者您可以使用ThreadFacade类。

如果您没有使用这些框架,请不要担心。您只需在代码中包含Thread类即可直接使用它,而不会出现任何问题。

创建Thread对象

您可以使用new关键字创建一个新的Thread对象,构造函数接受一个字符串或null作为参数。如果是null,默认值为空字符串""

$string = new Thread('Hello world!');
echo($string->toString());
// "Hello world!"

$emptyString = new Thread();
echo($emptyString->toString());
// ""

您还可以使用静态的 make()of()from() 方法从一个字符串或数组创建一个新的线程对象。每个静态构造方法都接受一个字符串或一个数组作为参数。

如果您使用数组作为静态构造方法的参数,则数组将以空格作为分隔符始终被压缩。然后,您可以使用 StringableTrait 方法来根据您的喜好操作字符串。

$string = Thread::make('a b c');
//OR
$string = Thread::make(['a', 'b', 'c']);
echo($string->toString());
// "Hello world!"

$string = Thread::of('a b c');
//OR
$string = Thread::of(['a', 'b', 'c']);
echo($string->toString());
// "a b c"

$string = Thread::from('a b c');
//OR
$string = Thread::from(['a', 'b', 'c']);
echo($string->toString());
// "a b c"

字符串操作

Thread 提供了几个用于操作字符串的方法。位于 StringableTrait 特性中的方法是可以链式的。位于 Thread.php 类中的方法不是链式的,而是返回特定的值,如字符串或数组。

可用的 Stringable 方法

使用链式方法操作字符串的示例

$string = Thread::from('Foo bar');
//"Foo bar"
$string->toPascalCase();
//"FooBar"
$string->append(' baz');
//"FooBar baz"
$string->toTitleCase()->stripChar('a')->lcFirst()
//"fooBr Bz
$string->stripWhitespace()->stripChar('o');
//fBrBz
//example: manipulating phone number string:
$phoneNumber = Thread::from('+1 (123) 456-7890 x123');
$phone = $phoneNumber->splitOn('x')[0];
//"+1 (123) 456-7890 "
$extension = $phoneNumber->splitOn('x')[1];
//"123"
$phone->stripNonNumeric()->stripWhitespace()->toString();
//"11234567890"
$phone->getIntegerValue();
//11234567890

测试

要运行测试套件,请运行以下命令

composer test

变更日志

有关最近更改的更多信息,请参阅 变更日志

贡献

有关详细信息,请参阅 贡献指南

鸣谢

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件