mojopollo/laravel-helpers

Mojo的Laravel助手:一套用于Laravel 5.0/5.1/Composer的各种辅助函数

1.0.12 2016-01-07 19:50 UTC

This package is not auto-updated.

Last update: 2024-09-24 04:25:17 UTC


README

Build Status Latest Stable Version Latest Unstable Version License Total Downloads

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',
// ]