75142913在线留言
【Laravel笔记】实用技巧大全(不断更新中...)_PHP技术_网络人

【Laravel笔记】实用技巧大全(不断更新中...)

Kwok 发表于:2022-03-30 18:30:41 点击:46 评论: 0

本文将收集一些在Laravel开发中非常好用的一些小工具和函数,以及开发技巧

一、调试

1、dd()函数,打印数据并退出:

这一个dump + die 组合的函数,可以友好输出变量并停止后面的代码执行,在调试的时候非常好用。

dd('我挂了~');

小小知识,该函数返回500错误,而且支持多个变量同时打印。内部使用了for遍历所有参数。

2、dump()函数,打印数据:

上面的dd函数会结束并返回一个500错误,而这里的dump则只会打印当前数据,并继续执行程序后面的操作。

dump("我不是挂掉的~", '我会坚强的活着!');

可以根据情况着情使用上面2个调用函数。dd是真的好记哦~

3、back()函数,回到上一页:

调用back()函数可以让我们快速的返回上一页。

return back($status = 302, $headers = [], $fallback = '/');//指定302代码返回到首页
return back();//返回到上一页

4、e()函数,返回HTML实体:

调用 PHP 的 htmlspecialchars 函数,且 double_encode 默认设定为 true:

echo e('foo');//foo

5、在页面里显示程序本次执行时间

我们可以在模板的结尾处(footer),或者body结束前插入下面的代码即可显示:

耗时:{{ number_format((microtime(true) - LARAVEL_START)*1000,2)}}毫秒

按秒显示:

耗时:{{ round(microtime(true) - LARAVEL_START,3)}}秒

6、在页面显示程序使用内存

执行内存(显示最终耗费内存)

{{ round(memory_get_usage()/1024/1024, 2) }}MB

内存峰值(执行过程中,使用到的最高峰)

{{ round(memory_get_peak_usage(true)/1024/1024, 2) }}MB

组合内存信息

申请内存:{{ round(memory_get_peak_usage()/1024/1024, 2) }}MB 
实用内存: {{ round(memory_get_usage()/1024/1024, 2) }}MB  
内存峰值:{{ round(memory_get_peak_usage(true)/1024/1024, 2) }}MB

二、字符串处理

内置强大的字符串处理函数与方法,操作前请确认引用 use IlluminateSupportStr包。

1、Str::finish()方法,字符以x结尾:

修饰字符串以指定的方式结尾,如果尾部符合要求则不追加。

echo Str::finish('http://www.55mx.com', '/');
// http://www.55mx.com/

echo Str::finish('https://www.meishiq.com/', '/');
// https://www.meishiq.com/


//同上,字符以指定内容开始
echo Str::start('www.meishiq.com/', 'https://');

Str::startsWith('www.meishiq.com', 'www.');//true,判断是否以指定的字符开始
Str::endsWith('www.meishiq.com', 'www.');//false,判断是否以指定的字符结尾

2、Str::length() 方法,计算字符长度:

返回指定字符串的长度(支持中英文空格等。)

echo $length = Str::length('美食圈 meishiq.com'); //15(空格也计算)

3、Str::limit()方法,截取字符:

将字符串以指定长度进行截断,英文算1个字符,中文算2个字符,好处是中文截取不会出现乱码。

echo $length = Str::limit('在我的后园,可以看见墙外有两株树,一株是枣树,还有一株也是枣树。', -7);
// 在我的后园,可以看见墙外有两株树,一株是枣树,还有一株也...

echo $length = Str::limit('在我的后园,可以看见墙外有两株树,一株是枣树,还有一株也是枣树。', 29, '~@#');
// 在我的后园,可以看见墙外有两~@#

4、字符串替换:

常用的字符器替换操作,非常强大呀~

//使用数组键按顺序替换指定的字符
echo Str::replaceArray('枣树', ['桃树', '李树'], '在我的后园,可以看见墙外有两株树,一株是枣树,还有一株也是枣树。');
//在我的后园,可以看见墙外有两株树,一株是桃树,还有一株也是李树。

//直接替换 str_replace 包装
echo Str::replace('后', '前', '在我的后园');//在我的前园

//使用正则匹配并按数组顺序替换
echo preg_replace_array('/:[a-z_]+/', ['桃树', '面包'], '一株是:start,还有一株也是:end。');
//一株是桃树,还有一株也是面包。 

//只替换第一次
echo Str::replaceFirst('树', '子树', '一株是枣树,还有一株也是枣树。');//一株是枣子树,还有一株也是枣树。
//只替换最后一次
echo Str::replaceLast('树', '子树', '一株是枣树,还有一株也是枣树。');//一株是枣树,还有一株也是枣子树。

//反转字符
echo Str::reverse('美食圈');//圈食美

//删除字符串里的关键字(替换为空)
Str::remove('树', '一株是枣树,还有一株也是枣树。');//一株是枣,还有一株也是枣。

//替换给定字符串中的多个值
echo Str::swap([
    '一株' => '二颗',
    '枣' => '桃',
], '一株是枣树,还有一株也是枣树。');//二颗是桃树,还有二颗也是桃树。

5、按关键字截取

可以截取之前、之后、之间。

echo Str::before('一株是枣树,还有一株也是枣树。');

echo Str::beforeLast('一株是枣树,还有一株也是枣树。', '枣树'); //一株是枣树,还有一株也是

echo Str::between('一株是枣树,还有一株也是枣树。', '枣树', '枣树'); //,还有一株也是

6、检测字符串是否存在

判断指定字符串中是否包含另一指定字符串

echo Str::contains('This is my name', 'my');// true,区分大小写

传递数组的值的形式来判断指定字符串是否包含数组中的值:

echo Str::contains('This is my name', ['my', 'foo']);// true,包含任意1个

echo Str::containsAll('This is my name', ['my', 'foo']);//false,是否包含指定数组中的所有值

echo Str::endsWith('This is my name', ['name', 'foo']);// true,结尾包含任意值
echo Str::endsWith('This is my name', ['this', 'foo']);// false

7、字符隐藏

echo Str::excerpt('This is my name', 'my', [
    'radius' => 3
]);// '...is my na...'

echo Str::excerpt('This is my name', 'my', [
    'radius' => 3,
    'omission' => '(...) '
]);//  '(...) my name'

echo Str::mask('taylor@example.com', '*', 3);// tay***************

echo Str::mask('taylor@example.com', '*', -15, 3);// tay***@example.com

8、字符填充

echo Str::random(40);//生成40个随机字符

//在字符左边填充(带参数)
echo Str::padLeft('Kwok', 10, '-=');

// '-=-=-Kwok'

//在字符左边填充(不带参数以空格)
$padded = Str::padLeft('James', 10);

// '     Kwok'
//在字符右边填充(同上)
Str::padRight('Kwok', 10, '-');

三、实战使用场景

这里将补充我在平时开发使用中的一些实战场景。

1、 abort_if  {.collection-method}

如果给定的布尔表达式评估为 true,abort_if 函数将引发 HTTP 异常:

//管理员可见
abort_if($article->status != 0 && !Auth::user()->isAdmin(), 403, '文章审核中');

当文章未审核时 返回 403 错误(停止后续的执行),但管理员是可以正常查看的。

2、abort_unless() {.collection-method}

如果给定的布尔表达式评估为 false,则 abort_unless 函数将引发 HTTP 异常:

abort_unless($article->status != 0 && Auth::user()->isAdmin(), 403, '文章审核中');

与abort_if取反,可以根据自己的喜好使用。

3、 Auth::user()->isAdmin() 判断是否为管理员

在上面的1、2项中,我们检测了是否为管理的方法需要自己去实现,在User模型中,增加下面的代码即可:

use IlluminateSupportFacadesAuth; //验证用户
//先通过 Auth::check() 检测是否登陆,然后判断数据库里用户组ID是否为管理组ID(group_id == 1)
public function isAdmin()
{
    return Auth::check() && $this->group_id == 1;
}

4、abort() {.collection-method}

使用 abort 方法抛出一个 HTTP 异常交给异常处理:

$this->id = $article->id ?? abort(404, '文章不存在');//文章ID

当文章不存在时,返回 404 错误(停止后续执行)。

除非注明,网络人的文章均为原创,转载请以链接形式标明本文地址:https://www.55mx.com/post/205
标签:laravel笔记技巧Kwok最后编辑于:2022-05-14 20:14:58
1
感谢打赏!

《【Laravel笔记】实用技巧大全(不断更新中...)》的网友评论(0)

本站推荐阅读

热门点击文章