googleshokry / laravel-helpers
一套广泛的Laravel框架辅助函数和集合宏。
Requires
- php: ^7.2
- laravel/framework: ^5.6
Requires (Dev)
- kint-php/kint: ^2.2
- mockery/mockery: ^1.1
- nesbot/carbon: ^1.25
- orchestra/testbench: ^3.6
- phpunit/phpunit: ^6.4|^7.2
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.
This package is auto-updated.
Last update: 2024-09-29 05:02:13 UTC
README
一套广泛的Laravel框架辅助函数和集合宏。
目录
要求
- PHP 7.2或更高版本
- Laravel 5.6或更高版本
如何安装
只需使用Composer将包添加到您的项目,Laravel将自动发现它
composer require googleshokry/laravel-helpers
如果您想使用集合调试宏,请将kint-php/kint包作为开发依赖项安装
composer require kint-php/kint --dev
从1.x升级
所有必要的通用PHP辅助函数都已提取到它们自己的googleshokry/php-helpers包中,并且为了它们自己的包,已删除了一些其他辅助函数。实际上,从现在起,Laravel Helpers将仅包含Laravel框架的辅助函数。
此外,最低要求已升级到PHP 7.2和Laravel 5.6。
查看变更日志获取更多信息。
框架辅助函数
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
翻转行和列的值,使列变为行,行变为列。
之前
之后
如何使用
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)。请参阅许可证获取更多信息。
变更日志
请参阅变更日志了解最近的变化。
测试
composer install
composer test
贡献
安全
如果您发现任何与安全相关的问题,请发送电子邮件至sms.shokry.mohamed@gmail.com,而不是使用问题跟踪器。
致谢
- googleshokry
- 标志设计来自Vitor Caneco
- 所有贡献者
关于
我的名字是Sebastiaan,我是一名专注于构建自定义Laravel应用的自由职业开发者。查看我的[作品集][link-portfolio]获取更多信息,[我的博客][link-blog]获取最新的技巧和窍门,以及我的其他软件包以启动您的下一个项目。
您有一个需要指导的项目吗?请发送电子邮件至sms.shokry.mohamed@gmail.com!