marshmallow/helpers

一个包含我们可以在所有项目中使用的所有辅助函数的包


README

alt text

Marshmallow Deployer

我们构建了一个包含一些几乎在所有项目中都很有用的辅助函数的包。我们在所有项目中都使用这个包。为我们自己和我们的客户。如果您缺少任何东西,请创建一个问题,我们会尽快添加。

Version Issues Code Coverage Licence

安装

您可以通过composer安装此包

composer require marshmallow/helpers

目录

  1. CSV Helper
  2. 辅助函数
  3. 字符串辅助函数
  4. 迁移
  5. URL
  6. 数组
  7. 评论
  8. Grouper

CSV Helper

这个辅助函数将使生成.csv文件变得非常容易。请查看下面的示例。您可以使用store方法将其存储在您选择的位置。如果只想下载文件,可以使用download方法。如果您希望存储和下载生成的.csv文件,可以使用storeAndDownload方法。

使用示例

$headers = ['Column 1', 'Column 2', 'Column 3'];
$data = [
	[1, 2, 3],
	[4, 5, 6],
];

return CSV::headers($headers)
	->data($data)
	->delimiter(';')
	->setFilename('generated-csv-1234')
	->storeAndDownload();

使用集合作为数据属性

您可以使用集合作为您的数据属性。默认情况下,它将映射集合中的所有数据。如果您想编辑集合数据,可以在data方法中添加回调方法。请注意,这将给您每一行作为一个&nbs;array&nbs;值。

use Marshmallow\HelperFunctions\Facades\CSV;

CSV::headers($headers)
        ->data($data, function (array $row) {
            return [
                $row['name'],
                $row['slug'],
                $row['created_at'],
            ];
        })
        ->storeAndDownload();

存储和下载调用

以下方法是用于存储和下载生成csv文件的。

$csv->download();
$csv->store();
$csv->storeAndDownload();
$csv->stream();

辅助函数

百分比辅助函数

这是一个在您的Laravel应用程序中可用的公共辅助函数。此函数可以在您的所有PHP和Blade文件中使用。

percentage(47, App\Post::get()); // 63.829787234043

字符串辅助函数

Str辅助函数扩展了Laravel的辅助函数。因此,您可以在Laravel辅助函数中找到所有可用的方法。请参阅Laravel文档以了解所有可用的方法。

Str::join()

此方法非常适合连接字符串,但最后一个项目使用另一个值。请查看下面的示例。

Str::join([
  'Marshmallow',
  'Stef van Esch',
  'Mr Mallow'
]);

// Marshmallow, Stef van Esch and Mr Mallow

Str::random()

我们在Laravel的默认Str::random()上添加了。我们添加了一个第二个参数,该参数是一个应该被忽略的字符数组。我们还内置了一些预设,例如lowercase,这将确保随机字符串不会包含任何小写字符。

Str::random($limit = 16, $ignore = [
    /**
     * Custom items
     */
    'A','B', 'C', 'D',

    /**
     * Presets
     */
    'lowercase', 	// Will ignore all lowercase characters.
    'uppercase',	// Will ignore all uppercase characters.
    'letters',		// Will ignore all letters.
    'numbers',		// Will ignore all numbers.
    'similar',		// Will ignore all numbers and letters that have been marked as similar.
]);

Str::cleanPhoneNumber()

Str::cleanPhoneNumber()

Str::phonenumberWithCountryCode()

返回带有国家代码的干净电话号码。您可以选择在电话号码的开始处返回带有+00的电话号码。

Str::phonenumberWithCountryCode('0628998954')
// response: +31628998954

Str::phonenumberWithCountryCode(
    '0031628998954',
    $country_code = '31',
    $use_plus_instead_of_zeros = false
);
// response: 0031628998954

Str::numbersOnly()

Str::numbersOnly()

Str::numbersAndLettersOnly()

Str::numbersAndLettersOnly()

Str::readmore()

Str::readmore(
    $string,
    $lenght_first_part,
    $return_this_part = null
);

Str::paragraphsAsArray()

Str::paragraphsAsArray($string);

Str::getFirstParagraph()

Str::getFirstParagraph(
    $string,
    $number_of_paragraphs = 1,
    $return_array = false
);

Str::getAllButFirstParagraph()

Str::getAllButFirstParagraph(
    $string,
    $number_of_paragraphs_to_skip = 1,
    $return_array = false
);

迁移

我们有一个特例,当创建迁移时可以提供一些额外的选项。将MigrationHelper特例添加到您的迁移中,以使用这些选项。

实现

use Marshmallow\HelperFunctions\Traits\MigrationHelper;

class CreateProductTable extends Migration
{
    use MigrationHelper;

只有当列不存在时才创建列。

添加此方法是因为当数据库已经有一个产品表,后来将使用我们的Product包时,迁移将引发错误。

$this->createColumnIfDoesntExist(
    'products', 'deleted_at', function (Blueprint $table) {
        $table->softDeletes();
    }
);

URL

URL::isInternal()

URL::isInternal($url)

URL::isCurrent()

URL::isCurrent($url)

URL::buildFromArray()

URL::buildFromArray($array)

URL::isNova()

URL::isNova($request)

URL::isNotNova()

URL::isNotNova($request)

数组

Arrayable::storeInFile();

此方法将漂亮地存储一个数组到文件中。使用此方法可以生成配置文件。

Arrayable::storeInFile(array $array, string $file_location);

Builder

Builder::published()

BuilderHelper::published将根据数据库列中的发布状态进行筛选。

public function scopePublished (Builder $builder)
{
    BuilderHelper::published(
        $builder,
        $valid_from_column,
        $valid_till_column
    );
}

评论

您可以使用ReviewHelper::ratingToStars(4.5)来获取评价星星。默认情况下,ReviewHelper会认为您使用的是最大评价5分,支持半星评价,并返回FontAwesome图标字符串。您可以通过以下方式来覆盖此行为:

自定义

创建配置文件config/review.php并指定您的需求

return [
    'max_rating' => 10,
    'full_star' => '+ ',
    'half_star' => '* ',
    'empty_star' => '- ',
];

或者,您可以将相同的配置数组作为ratingToStars方法的第二个参数提供,如下所示;

ReviewHelper::ratingToStars(4.5, [
    'max_rating' => 10,
    'full_star' => '+ ',
    'half_star' => '* ',
    'empty_star' => '- ',
])

Grouper

Grouper是一个非常实用的助手,当您需要将查询结果分成组时使用。我们在博客中经常使用这个助手。第一行可能有3个结果,第二行将有1个结果,第三行将再次有3个项目。请查看下面的示例。

use Marshmallow\HelperFunctions\Facades\Collection;

$grouper = Collection::createGrouper(Blog::get(), $structure_array = [
    'first' => 3,
    'second' => 1,
    'third' => 2,
]);

如示例所示,structure_array有一个以名称为键。这样做是为了在您遍历组时,能够测试当前遍历的是哪个组。

foreach ($grouper as $group) {
    if ($group->is('first')) {
        // Add your template for 3 items
    }

    if ($group->is('second')) {
        // Add your template for 1 item
    }
}

遍历组项的方式与处理集合时预期的方式相同。

foreach ($grouper as $group) {
    foreach ($group as $blog) {
        //
    }
}

更新日志

请参阅更新日志获取更多最近更改的信息。

测试

composer test

安全性

如果您发现任何安全相关的问题,请通过stef@marshmallow.dev发送电子邮件,而不是使用问题跟踪器。

鸣谢

许可协议

MIT许可协议(MIT)。请参阅许可文件获取更多信息。