十个必知的 Laravel 5.8 辅助函数

Laravel

Laravel 有很多辅助函数,它们提供了一种处理路径、数组和字符串的捷径。而完全了解它们却是几乎不可能的事情。大多数开发者都只知道一些最常见的,但是如果你再深入一点,会发现有一些非常有用的辅助函数。在本文中,我将为你提供十个你应该了解的辅助函数。

1. Logger

logger 辅助函数可以在系统日志等级为 debug 的时候记录一些日志信息。

logger('Product was changed.', ['id' => $product->id]);

上述代码会在日志文件中写入一行信息:

[2019-06-14 09:53:22] local.DEBUG: Product was changed. {"id":4}

如果没有传入参数,那么 logger 函数将会返回 Logger 实例,这样你可以自己控制记录日志的等级。

logger()->error('An error occurred');

上述代码会在日志文件中写入这样的一行信息:

[2019-06-14 09:56:12] local.ERROR: An error occurred

2. 划分一个数组

 Arr::divide() 方法允许你将一个数组分成俩数组。函数的返回值为两个数组,一个包含原始数组的键,另一个包含原始数组的值。

use Illuminate\Support\Arr;

[$keys, $values] = Arr::divide(['name' => 'James', 'age' => 33]);

$keys: ['name', 'age']
$values: ['James', 33]

3. Blank

 blank 辅助函数会检查给定值是否为空值。空值代表 null 值 、只包含空格的字符串、空数组、或者空字符串。

提示:Booleans 布尔值,视为空值

blank('');
blank('   ');
blank(null);
blank(collect())
// 以上均返回 true

blank(0);
blank(true);
blank(false);
// 以上将返回 false

与这个辅助函数相反的是 filled辅助函数

4. Dump 变量

如果要调试一个或多个变量,使用 dump 变量非常方便。

dump($variable);

还可以通过向 dump 函数传递额外的变量来调试多个变量。

dump($var1, $var2, $var3);

除了 dump 函数之外,还有另一个函数。这个辅助函数就是 dd , 意思是 dump and die 。这个函数的用法和 dump 一样。 dd 函数不仅执行了 dump ,还会终止执行语句( die() 的效果 )。

5. 路径

Laravel 有多个关于路径的辅助函数,你可以使用这些函数来获取特定目录的完全路径。

以下是 Laravel 关于路径的辅助函数:

  • app_path
  • base_path
  • config_path
  • database_path
  • public_path
  • resource_path
  • storage_path
echo storage_path(); // 输出:"C:\Path\To\My\Project\storage"

当然你还可以将参数传递给路径辅助函数,该函数将附加到返回的路径中:

echo storage_path('attachment.pdf');  // 输出: "C:\Path\To\My\Project\storage\attachment.pdf"

6. Slug

要将给定的字符串生成 URL 友好的字符串,可以使用 Str::slug 函数。

$slug = Str::slug('Laravel Is Awesome');
// $slug: "laravel-is-awesome"

默认的分隔符是 连字符(-),当然你也可以通过向函数传递第二个参数来覆盖它。

$slug = Str::slug('Laravel Is Awesome', '&');
// $slug: "laravel&is&awesome"

7. 数组是否具有值

Arr:has 方法可用于使用 “.” 符号来检查数组中是否存在某个项或多个项。

要检查多个项,只需将数组传递给方法而不是传递字符串。

use Illuminate\Support\Arr;
$blogs = ['blog' => ['title' => 'My blog', 'published' => true]];
$contains = Arr::has($blogs, 'blog.title'); // true
$contains = Arr::has($blogs, ['blog.title', 'blog.published']); // true
$contains = Arr::has($blogs, ['blog.title', 'blog.author']); // false

8. UUID

调用 Str::uuid 方法会生成一个 UUID:

use Illuminate\Support\Str;
echo (string) Str::uuid(); // "2ad4abcc-8adc-47b6-b21e-9e5497a8af1b"

9. Optional

optional 辅助函数允许你访问作为参数传递的对象的属性或调用方法。此函数接受任何参数。

如果传递给函数的对象是 null , 则属性和方法将返回 null ,而不会抛出错误。

print optional($blog->author)->full_name;

如果在上面的示例中设置了 $blog->author ,那么将打印 $blog->authorfull_name 。如果由于某种原因不存在 $blog->author ,就不会抛出错误,也不会打印任何内容。

10. Pluck

Arr::pluck 方法会从数组中检索给定键的所有值。

$parents = [
    ['parent' => ['id' => 1, 'name' => 'James']],
    ['parent' => ['id' => 8, 'name' => 'Lisa']],
];
Arr::pluck($parents, 'parent.name'); // ['James', 'Lisa']

以上就是我想和你分享的 10 个 Laravel 辅助函数,也请你分享对这篇文章的看法。一定要好好查看我的其他文章哦,我的很多文章都是关于 Laravel 的。如果你对我的文章有任何反馈、疑问,或者你希望我撰写另一个有关 Laravel 的主题,都可以随时发表评论。

原文地址:https://medium.com/swlh/10-laravel-helpe...

译文地址:https://learnku.com/laravel/t/31793

本帖已被设为精华帖!
本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 5
Summer

blank() 这个不错

4个月前 评论
Summer (作者) (楼主) 4个月前
mution 4个月前
mution 4个月前
hldh214 4个月前

@Summer 我记得原文代码中有个 blank(0) :joy:是不是漏掉了,blank(0) 返回 false

4个月前 评论
curious 4个月前

一直没有注意到blank()这个函数,亏大发了。

4个月前 评论

blank([null])我在这上面吃了很大的亏

4个月前 评论
Summer (楼主) 4个月前
罪人 (作者) 4个月前

太魔法了

4个月前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!