mojopollo / laravel-helpers
Mojo的Laravel助手:一套用于Laravel 5.0/5.1/Composer的各种辅助函数
1.0.12
2016-01-07 19:50 UTC
Requires
- php: >=5.4.0
- illuminate/support: >=4.2.0
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: 4.7.*
README
Mojo的Laravel助手:一套用于Laravel框架和PHP 5.4/5.5/5.6/7.0的辅助函数集合。其中一些函数基于Stackoverflow中的代码,查看@see属性以获取引用。
安装
步骤1:通过Composer添加包
使用以下命令将此包添加到您的composer.json文件中
composer require mojopollo/laravel-helpers
步骤2:更新laravel 5.x config/app.php文件
将以下内容添加到providers数组中
Mojopollo\Helpers\StringHelperServiceProvider::class, Mojopollo\Helpers\ArrayHelperServiceProvider::class, Mojopollo\Helpers\DateTimeHelperServiceProvider::class, Mojopollo\Helpers\FileHelperServiceProvider::class,
将以下内容添加到aliases数组中
'StringHelper' => Mojopollo\Helpers\Facades\StringHelper::class, 'ArrayHelper' => Mojopollo\Helpers\Facades\ArrayHelper::class, 'DateTimeHelper' => Mojopollo\Helpers\Facades\DateTimeHelper::class, 'FileHelper' => Mojopollo\Helpers\Facades\FileHelper::class,
使用方法
要在控制器中启用任何助手类,请调用use关键字
<?php namespace App\Http\Controllers; use ArrayHelper; use FileHelper; ...
您现在可以通过其外观调用任何助手方法
StringHelper::replaceFirstMatch('one two three four five six', 3) FileHelper::directoryFiles('/directory-path') ...
如果您不想使用use关键字,在调用助手时可以改用反斜杠\
\StringHelper::replaceFirstMatch('one two three four five six', 3) \FileHelper::directoryFiles('/directory-path') ...
StringHelper
camelCase
将值转换为驼峰式
string camelCase(string $value)
StringHelper::camelCase('mojo_pollo'); // mojoPollo
snakeCase
将值转换为蛇形案
string snakeCase(string $value [, string $delimiter = '_'])
StringHelper::snakeCase('mojoPollo'); // mojo_pollo
replaceFirstMatch
str_replace()仅用于字符串搜索中的第一个匹配项的替换
string replaceFirstMatch(string $search, string $replace, string $subject)
StringHelper::replaceFirstMatch('mojo', 'jojo', 'mojo is a pollo and mojo'); // jojo is a pollo and mojo
limitByWords
返回指定单词计数的字符串
string limitByWords(string $str [, int $wordCount = 10])
StringHelper::limitByWords('one two three four five six', 3); // one two three
ArrayHelper
random
从提供的数组中获取随机元素
mixed random(array $array)
ArrayHelper::random(['one', 'two', 'three']); // two
morphKeys
将数组或多维数组中找到的所有键转换为驼峰式
array morphKeys(array $originalArray [, $morphTo = 'camel'])
ArrayHelper::morphKeys([ 'user' => [ 'first_name' => 'mojo', 'attributes' => [ 'second_key' => 'second value', ], ], ], 'camel'); // [ // 'user' => [ // 'firstName' => 'mojo', // 'attributes' => [ // 'secondKey' => 'second value', // ], // ], // ]
castValues
将'123'转换为int,'true'转换为布尔值等
array castValues(array $originalArray)
ArrayHelper::castValues([ 'value1' => 'true', 'value2' => 'false', 'value3' => '123', 'value4' => '{"mojo": "pollo"}', ]); // [ // 'value1' => true, // 'value2' => false, // 'value3' => 123, // 'value4' => ['mojo' => 'pollo'], // ]
sortByPriority
通过将元素移动到数组的顶部来重新排序数组,基于预先定义的数组,指定要将哪些元素移动到数组的顶部。注意:当$strictMatch设置为false时,匹配将不考虑类型和大小写敏感性
array sortByPriority(array $originalArray, array $priority [, $strictMatch = true])
$originalArray = [ [ 'name' => 'White Castle', 'city' => 'Las Vegas', 'zip' => '89109', ], [ 'name' => 'Burger Town', 'city' => 'Sherman Oaks', 'zip' => '91403', ], [ 'name' => 'Krabby Patty', 'city' => 'Walking the Plankton', 'zip' => '00000', ], [ 'name' => 'Uber Burger', 'city' => 'Little Rock', 'zip' => '72201', ], ]; $priority = [ [ 'city' => 'Walking the Plankton' ], [ 'name' => 'Burger Town' ], ]; ArrayHelper::sortByPriority($originalArray, $priority); // [ // [ // 'name' => 'Krabby Patty', // 'city' => 'Walking the Plankton', // 'zip' => '00000', // ], // [ // 'name' => 'Burger Town', // 'city' => 'Sherman Oaks', // 'zip' => '91403', // ], // [ // 'name' => 'White Castle', // 'city' => 'Las Vegas', // 'zip' => '89109', // ], // [ // 'name' => 'Uber Burger', // 'city' => 'Little Rock', // 'zip' => '72201', // ], // ]
DateTimeHelper
range
生成指定时间段开始和结束日期的数组(UTC)
array range(string $startDate, string $endDate, string $periodDate, string $step = '+1 day', string $daysOfWeek = null, string $dateFormat = 'Y-m-d H:i:s')
$startDate = '2015-06-04 08:00:00'; $endDate = '2015-06-04 12:00:00'; $periodDate = '2015-06-06 12:00:00'; $step = '+1 day'; $daysOfWeek = null; $dateFormat = 'Y-m-d H:i:s'; DateTimeHelper::range($startDate, $endDate, $periodDate, $step, $daysOfWeek, $dateFormat); // [ // [ // 'start' => '2015-06-04 08:00:00', // 'end' => '2015-06-04 12:00:00', // ], // [ // 'start' => '2015-06-05 08:00:00', // 'end' => '2015-06-05 12:00:00', // ], // [ // 'start' => '2015-06-06 08:00:00', // 'end' => '2015-06-06 12:00:00', // ], // ]
$startDate = '2015-09-23 10:11:51'; $endDate = '2015-09-24 02:55:51'; $periodDate = '2015-09-30 11:59:59'; $step = '+1 week'; $daysOfWeek = 'mon,wed,fri'; $dateFormat = 'Y-m-d H:i:s'; DateTimeHelper::range($startDate, $endDate, $periodDate, $step, $daysOfWeek, $dateFormat); // [ // [ // 'start' => '2015-09-21 10:11:51', // 'end' => '2015-09-22 02:55:51', // ], // [ // 'start' => '2015-09-23 10:11:51', // 'end' => '2015-09-24 02:55:51', // ], // [ // 'start' => '2015-09-25 10:11:51', // 'end' => '2015-09-26 02:55:51', // ], // [ // 'start' => '2015-09-28 10:11:51', // 'end' => '2015-09-29 02:55:51', // ], // [ // 'start' => '2015-09-30 10:11:51', // 'end' => '2015-10-01 02:55:51', // ], // [ // 'start' => '2015-10-02 10:11:51', // 'end' => '2015-10-03 02:55:51', // ], // ];
FileHelper
directoryFiles
返回包含目录及其子目录中文件完整路径的数组
array directoryFiles(string $path)
FileHelper::directoryFiles('/directory-path'); // [ // '/directory-path/file1.txt', // '/directory-path/file2.txt', // '/directory-path/subdirectory/file3.txt', // ]