gtmassey /thread
一个不依赖于框架的辅助库,用于在PHP中轻松操作字符串。
Requires
- php: ^8.1
Requires (Dev)
- laravel/pint: ^1.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.3.2
- spatie/ray: ^1.28
This package is auto-updated.
Last update: 2024-09-25 18:58:34 UTC
README
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 类中的方法不是链式的,而是返回特定的值,如字符串或数组。
使用链式方法操作字符串的示例
$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)。有关更多信息,请参阅 许可证文件