本文将收集一些在Laravel开发中非常好用的一些小工具和函数,以及开发技巧。
这一个dump + die 组合的函数,可以友好输出变量并停止后面的代码执行,在调试的时候非常好用。
dd('我挂了~');
小小知识,该函数返回500错误,而且支持多个变量同时打印。内部使用了for遍历所有参数。
上面的dd函数会结束并返回一个500错误,而这里的dump则只会打印当前数据,并继续执行程序后面的操作。
dump("我不是挂掉的~", '我会坚强的活着!');
可以根据情况着情使用上面2个调用函数。dd是真的好记哦~
调用back()函数可以让我们快速的返回上一页。
return back($status = 302, $headers = [], $fallback = '/');//指定302代码返回到首页
return back();//返回到上一页
调用 PHP 的 htmlspecialchars 函数,且 double_encode 默认设定为 true:
echo e('foo');//foo
我们可以在模板的结尾处(footer),或者body结束前插入下面的代码即可显示:
耗时:{{ number_format((microtime(true) - LARAVEL_START)*1000,2)}}毫秒
按秒显示:
耗时:{{ round(microtime(true) - LARAVEL_START,3)}}秒
执行内存(显示最终耗费内存)
{{ 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包。
修饰字符串以指定的方式结尾,如果尾部符合要求则不追加。
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,判断是否以指定的字符结尾
返回指定字符串的长度(支持中英文空格等。)
echo $length = Str::length('美食圈 meishiq.com'); //15(空格也计算)
将字符串以指定长度进行截断,英文算1个字符,中文算2个字符,好处是中文截取不会出现乱码。
echo $length = Str::limit('在我的后园,可以看见墙外有两株树,一株是枣树,还有一株也是枣树。', -7);
// 在我的后园,可以看见墙外有两株树,一株是枣树,还有一株也...
echo $length = Str::limit('在我的后园,可以看见墙外有两株树,一株是枣树,还有一株也是枣树。', 29, '~@#');
// 在我的后园,可以看见墙外有两~@#
常用的字符器替换操作,非常强大呀~
//使用数组键按顺序替换指定的字符
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([
'一株' => '二颗',
'枣' => '桃',
], '一株是枣树,还有一株也是枣树。');//二颗是桃树,还有二颗也是桃树。
可以截取之前、之后、之间。
echo Str::before('一株是枣树,还有一株也是枣树。');
echo Str::beforeLast('一株是枣树,还有一株也是枣树。', '枣树'); //一株是枣树,还有一株也是
echo Str::between('一株是枣树,还有一株也是枣树。', '枣树', '枣树'); //,还有一株也是
判断指定字符串中是否包含另一指定字符串
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
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
echo Str::random(40);//生成40个随机字符
//在字符左边填充(带参数)
echo Str::padLeft('Kwok', 10, '-=');
// '-=-=-Kwok'
//在字符左边填充(不带参数以空格)
$padded = Str::padLeft('James', 10);
// ' Kwok'
//在字符右边填充(同上)
Str::padRight('Kwok', 10, '-');
这里将补充我在平时开发使用中的一些实战场景。
如果给定的布尔表达式评估为 true,abort_if 函数将引发 HTTP 异常:
//管理员可见
abort_if($article->status != 0 && !Auth::user()->isAdmin(), 403, '文章审核中');
当文章未审核时 返回 403 错误(停止后续的执行),但管理员是可以正常查看的。
如果给定的布尔表达式评估为 false,则 abort_unless 函数将引发 HTTP 异常:
abort_unless($article->status != 0 && Auth::user()->isAdmin(), 403, '文章审核中');
与abort_if取反,可以根据自己的喜好使用。
在上面的1、2项中,我们检测了是否为管理的方法需要自己去实现,在User模型中,增加下面的代码即可:
use IlluminateSupportFacadesAuth; //验证用户
//先通过 Auth::check() 检测是否登陆,然后判断数据库里用户组ID是否为管理组ID(group_id == 1)
public function isAdmin()
{
return Auth::check() && $this->group_id == 1;
}
使用 abort 方法抛出一个 HTTP 异常交给异常处理:
$this->id = $article->id ?? abort(404, '文章不存在');//文章ID
当文章不存在时,返回 404 错误(停止后续执行)。
除非注明,网络人的文章均为原创,转载请以链接形式标明本文地址:https://www.55mx.com/post/205
《【Laravel笔记】实用技巧大全(不断更新中...)》的网友评论(0)