sebastiaanluca / laravel-helpers
一组广泛的Laravel框架辅助函数和集合宏。
Requires
- php: ^7.3
- laravel/framework: ^7.0|^8.0
Requires (Dev)
- kint-php/kint: ^3.3
- nesbot/carbon: ^1.0|^2.0
- orchestra/testbench: ^5.1|^6.0
- phpunit/phpunit: ^8.5
Suggests
- kint-php/kint: A powerful and modern PHP debugging tool. Required for the debug collection macros.
- nesbot/carbon: A simple PHP API extension for DateTime. Required for the carbonize collection macro.
README
一组广泛的Laravel框架辅助函数和集合宏。
目录
要求
- PHP 7.3或更高版本
- Laravel 7.0或更高版本
如何安装
只需使用Composer将包添加到您的项目中,Laravel将自动发现它
composer require sebastiaanluca/laravel-helpers
如果您想使用集合调试宏,请安装 kint-php/kint 包作为开发依赖项
composer require kint-php/kint --dev
从1.x升级
所有必要的通用PHP辅助函数都已提取到它们自己的 sebastiaanluca/php-helpers 包中,并且一些其他辅助函数已移除,以期待它们自己的包。从现在起,Laravel Helper将仅包含Laravel框架的辅助函数。
查看变更日志 获取更多信息。
框架辅助函数
locale
获取活动应用程序的locale或默认locale(如果未设置或不存在)。
locale();
// "en"
is_guest
确定当前用户是否为访客。
is_logged_in 的相反。
// When not authenticated is_guest(); // true // When authenticated as a user is_guest(); // false
is_logged_in
确定当前用户是否已验证。
is_guest 的相反。
// When not authenticated is_logged_in(); // false // When authenticated as a user is_logged_in(); // true
user
获取当前已验证的用户(如果有的话)。
登录时,返回您的用户模型或实现 \Illuminate\Contracts\Auth\Authenticatable
的对象。
// When not authenticated user(); // null // When authenticated as a user user(); // Illuminate\Foundation\Auth\User {}
me
获取当前已验证的用户(如果有的话)。
登录时,返回您的用户模型或实现 \Illuminate\Contracts\Auth\Authenticatable
的对象。
user 的替代方案。
// When not authenticated me(); // null // When authenticated as a user me(); // Illuminate\Foundation\Auth\User {}
集合宏
carbonize
从集合中的项目创建Carbon实例。
collect([ 'yesterday', 'tomorrow', '2017-07-01', ])->carbonize(); /* Illuminate\Support\Collection { all: [ Carbon\Carbon { "date": "2017-07-09 00:00:00.000000", "timezone_type": 3, "timezone": "UTC", }, Carbon\Carbon { "date": "2017-07-11 00:00:00.000000", "timezone_type": 3, "timezone": "UTC", }, Carbon\Carbon { "date": "2017-07-01 00:00:00.000000", "timezone_type": 3, "timezone": "UTC", }, ], } */
between
将每个集合项减少到给定开始和结束字符串之间的值。
第二个参数是可选的,如果为null
,则回退到起始字符串。
collect([ '"value1"', '"value2"', '"value3"', ])->between('"', '"'); /* Illuminate\Support\Collection { all: [ "value1", "value2", "value3", ], } */
transformKeys
对集合的键执行操作。
可调用操作可以是全局方法或闭包。
collect([ 'a' => 'value', 'b' => 'value', 'c' => 'value', ])->transformKeys('strtoupper'); /* Illuminate\Support\Collection { all: [ "A" => "value", "B" => "value", "C" => "value", ], } */
collect([ 'a' => 'value', 'b' => 'value', 'c' => 'value', ])->transformKeys(function (string $key) { return 'prefix-' . $key; }); /* Illuminate\Support\Collection { all: [ "prefix-a" => "value", "prefix-b" => "value", "prefix-c" => "value", ], } */
transpose
转置(翻转)集合矩阵(数组数组),使其列变为行,行变为列。
collect([ [1, 2, 3], [4, 5, 6], [7, 8, 9], ])->transpose(); /* Illuminate\Support\Collection { all: [ [1, 4, 7], [2, 5, 8], [3, 6, 9], ], } */
transposeWithKeys
翻转行和每列的值,使其列变为行,行变为列。
之前
id | name | |
---|---|---|
A | 1 | James |
B | 2 | Joe |
C | 3 | Jonas |
之后
A | B | C | |
---|---|---|---|
id | 1 | 2 | 3 |
name | James | Joe | Jonas |
如何使用
collect([ 'A' => [ 'id' => 1, 'name' => 'James', ], 'B' => [ 'id' => 2, 'name' => 'Joe', ], 'C' => [ 'id' => 3, 'name' => 'Jonas', ], ])->transposeWithKeys(); /* Illuminate\Support\Collection { all: [ "id" => [ "A" => 1, "B" => 2, "C" => 3, ], "name" => [ "A" => "James", "B" => "Joe", "C" => "Jonas", ], ], } */
如果您不想自动猜测,也可以传递一些行标题名称。然后,您可以使用transposeWithKeys(['myID', 'row2'])
调用宏,结果行将分别是myID
和row2
,而不是分别对应的id
和name
。
d
使用Kint在集合上显示结构化调试信息。可以在集合的方法链中多次调用,并在每个使用点输出调试信息。之后继续脚本执行。
明确要求使用kint-php/kint包。
collect([ 'id' => 6, 'name' => 'Sebastiaan', ]) ->d() ->put('role', 'author') ->d();
ddd
使用Kint在集合上显示结构化调试信息。之后停止脚本执行,因此只能在集合的方法链中调用一次。
明确要求使用kint-php/kint包。
collect([ 'id' => 6, 'name' => 'Sebastiaan', ]) ->d() ->put('role', 'author') ->ddd();
许可协议
本软件包在MIT许可协议(MIT)下运行。有关更多信息,请参阅LICENSE。
变更日志
请参阅CHANGELOG,以获取有关最近更改的更多信息。
测试
composer install
composer test
贡献
请参阅CONTRIBUTING和CODE_OF_CONDUCT,以获取详细信息。
安全
如果您发现任何与安全相关的问题,请通过hello@sebastiaanluca.com发送电子邮件,而不是使用问题跟踪器。
鸣谢
- Sebastiaan Luca
- 标志设计者:Vitor Caneco
- 所有贡献者
关于
我的名字是Sebastiaan,我是一名自由职业的Laravel开发者,专注于构建定制的Laravel应用程序。查看我的作品集以获取更多信息,我的博客获取最新的技巧和窍门,以及我的其他软件包来启动您的下一个项目。
您有一个可能需要一些指导的项目吗?请给我发送电子邮件至hello@sebastiaanluca.com!