辅助函数


简介

Laravel 自带了一系列 PHP 辅助函数,很多被框架自身使用,如果你觉得方便的话也可以在代码中使用它们。

方法列表

数组 & 对象

Arr::add()

Arr::add方法添加给定键值对到数组 —— 如果给定键不存在或对应值为空的话:

Arr::collapse()

Arr::collapse() 方法将多个数组合并成一个:

Arr::divide()

Arr::divide 方法返回两个数组,一个包含原数组的所有键,另外一个包含原数组的所有值:

Arr::dot()

Arr::dot 方法使用「.」号将将多维数组转化为一维数组:

Arr::except()

Arr::except 方法从数组中移除给定键值对:

Arr::first()

Arr::first 方法返回通过测试数组的第一个元素:

默认值可以作为第三个参数传递给该方法,如果没有值通过测试的话返回默认值:

Arr::flatten()

Arr::flatten 方法将多维数组转化为一维数组:

Arr::forget()

Arr::forget 方法使用「.」号从嵌套数组中移除给定键值对:

Arr::get()

Arr::get 方法使用「.」号从嵌套数组中获取值:

Arr::get 方法还接收一个默认值,如果指定键不存在的话则返回该默认值:

Arr::has()

Arr::has 方法使用「.」检查给定数据项是否在数组中存在:

Arr::last()

Arr::last 方法返回通过过滤数组的最后一个元素:

我们可以传递一个默认值作为第三个参数到该方法,如果没有值通过真理测试的话该默认值被返回:

Arr::only()

Arr::only 方法只从给定数组中返回指定键值对:

Arr::pluck()

Arr::pluck 方法从数组中返回给定键对应的键值对列表:

你还可以指定返回结果的键:

Arr::prepend()

Arr::prepend 方法将数据项推入数组开头:

如果需要的话还可以指定用于该值的键:

Arr::pull()

Arr::pull 方法从数组中返回并移除键值对:

我们还可以传递默认值作为第三个参数到该方法,如果指定键不存在的话返回该值:

Arr::random()

Arr::random 方法从数组中返回随机值:

还可以指定返回的数据项数目作为可选的第二个参数,需要注意的是提供这个参数会返回一个数组,即使只返回一个数据项:

Arr::set()

Arr::set 方法用于在嵌套数组中使用「.」号设置值:

Arr::sort()

Arr::sort 方法通过值对数组进行排序:

还可以通过给定闭包的结果对数组进行排序:

Arr::sortRecursive()

Arr::sortRecursive 方法使用 sort 函数对索引数组、ksort 函数对关联数组进行递归排序:

Arr::where()

Arr::where 方法使用给定闭包对数组进行过滤:

Arr::wrap()

Arr::wrap 方法将给定值包裹到数组中,如果给定值已经是数组则保持不变:

如果给定值是空的,则返回一个空数组:

data_fill()

data_fill 函数使用「.」号以嵌套数组或对象的方式设置缺失值:

该函数还接收「*」号作为通配符并填充相应目标:

data_get()

data_get 函数使用「.」号从嵌套数组或对象中获取值:

data_get 函数还接收默认值,以便指定键不存在的情况下返回:

data_set()

data_set 函数使用「.」号设置嵌套数组或对象的值:

该函数还接收通配符然后设置相应的目标值:

默认情况下,任意已存在的值都会被覆盖,如果你想要只设置不存在的值,可以传递 false 作为第三个参数:

head()

head 函数只是简单返回给定数组的第一个元素:

last()

last 函数返回给定数组的最后一个元素:

路径函数

app_path()

app_path 函数返回 app 目录的绝对路径,你还可以使用 app_path 函数为相对于 app 目录的给定文件生成绝对路径:

base_path()

base_path 函数返回项目根目录的绝对路径,你还可以使用 base_path 函数为相对于应用根目录的给定文件生成绝对路径:

config_path()

config_path 函数返回应用配置目录 config 的绝对路径,还可以使用 config_path 函数在应用配置目录内为给定文件生成完整路径:

database_path()

database_path 函数返回应用数据库目录 database 的完整路径,还可以使用 database_path 函数在数据库目录内为给定文件生成完整路径:

mix()

mix 函数返回带有版本号的Mix文件路径:

public_path()

public_path 函数返回 public 目录的绝对路径,还可以使用 public_path 函数在 public 目录下为给定文件生成完整路径:

resource_path()

resource_path 函数返回 resources 目录的绝对路径,还可以使用 resources 函数在 resources 目录下为给定文件生成完整路径:

storage_path()

storage_path 函数返回 storage 目录的绝对路径, 还可以使用 storage_path 函数在 storage 目录下为给定文件生成完整路径:

字符串函数

__()

__ 函数会使用本地化文件翻译给定翻译字符串或翻译键:

如果给定翻译字符串或键不存在,__ 函数将会返回给定值。所以,使用上面的例子,如果翻译键不存在的话 __ 函数将会返回 messages.welcome

class_basename()

class_basename 返回给定类移除命名空间后的类名:

e()

e 函数在给定字符串上运行 htmlentitiesdouble_encode 选项设置为 false):

preg_replace_array()

preg_replace_array 函数使用数组替换字符串序列中的给定模式:

Str::after()

Str::after 方法返回字符串中给定值之后的所有内容:

Str::before()

Str::before 方法返回字符串中给定值之前的所有内容:

Str::camel()

Str::camel 将给定字符串转化为形如 camelCase 的驼峰风格:

Str::contains()

Str::contains 方法判断给定字符串是否包含给定值(大小写敏感):

还可以传递数组值判断给定字符串是否包含数组中的任意值:

Str::endsWith()

Str::endsWith 方法用于判断字符串是否以给定值结尾:

Str::finish()

Str::finish 方法添加给定值单个实例到字符串结尾 —— 如果原字符串不以给定值结尾的话:

Str::is()

Str::is 方法判断给定字符串是否与给定模式匹配,星号可用于表示通配符:

Str::kebab()

Str::kebeb 方法将给定字符串转化为形如 kebab-case 风格的字符串:

Str::limit()

Str::limit 方法以指定长度截断字符串:

还可以传递第三个参数来改变字符串末尾字符:

Str::orderedUuid()

Str::orderedUuid 方法会生成一个「时间戳优先」 的 UUID 以便更高效地存储到数据库索引字段:

Str::plural()

Str::plural 方法将字符串转化为复数形式,该函数当前只支持英文:

还可以传递整型数据作为第二个参数到该函数以获取字符串的单数或复数形式:

Str::random()

Str::random 方法通过指定长度生成随机字符串,该函数使用了PHP的 random_bytes 函数:

Str::replaceArray()

Str::replaceArray 方法使用数组在字符串序列中替换给定值:

Str::replaceFirst()

Str::replaceFirst 方法会替换字符串中第一次出现的值:

Str::replaceLast()

Str::replaceLast 方法会替换字符串中最后一次出现的值:

Str::singular()

Str::singular 方法将字符串转化为单数形式,该函数目前只支持英文:

Str::slug()

Str::slug 方法将给定字符串生成 URL 友好的格式:

Str::snake()

Str::snake 方法将给定字符串转换为形如 snake_case 格式字符串:

Str::start()

如果字符串没有以给定值开头的话 Str::start 方法会将给定值添加到字符串最前面:

Str::startsWith()

Str::startsWith 方法用于判断传入字符串是否以给定值开头:

Str::studly()

Str::studly 方法将给定字符串转化为形如 StudlyCase 的、单词开头字母大写的格式:

Str::title()

Str::title 方法将字符串转化为形如 Title Case 的格式:

Str::uuid()

Str::uuid 方法生成一个 UUID(版本4):

trans()

trans 函数使用本地文件翻译给定翻译键:

如果指定翻译键不存在,trans 函数会返回给定键,所以,以上面的示例为例,如果翻译键不存在,trans 函数会返回 messages.welcome

trans_choice()

trans_choice 函数翻译带拐点的给定翻译键:

如果指定的翻译键不存在,trans_choice 函数会将其返回。所以,以上面的示例为例,如果指定翻译键不存在 trans_choice 函数会返回 messages.notifications

URL 函数

action()

action 函数为给定控制器动作生成 URL,你不需要传递完整的命名空间到该控制器,传递相对于命名空间 App\Http\Controllers 的类名即可:

如果该方法接收路由参数,你可以将其作为第二个参数传递进来:

asset()

asset 函数使用当前请求的 scheme(HTTP 或 HTTPS)为前端资源生成一个 URL:

你可以通过在 .env 文件中设置 ASSET_URL 变量来配置资源 URL 主机名,如果你将资源托管在第三方服务如 Amazon S3 时,这一功能很有用:

secure_asset()

secure_asset 函数使用 HTTPS 为前端资源生成一个 URL:

route()

route 函数为给定命名路由生成一个URL:

如果该路由接收参数,你可以将其作为第二个参数传递进来:

默认情况下,route 函数生成的是绝对 URL,如果你想要生成一个相对 URL,可以传递 false 作为第三个参数:

secure_url

secure_url 函数为给定路径生成完整的 HTTPS URL:

url()

url 函数为给定路径生成完整URL:

如果没有提供路径,将会返回 Illuminate\Routing\UrlGenerator 实例:

其它函数

abort()

abort 函数会抛出一个被异常处理器渲染的 HTTP 异常

还可以提供异常响应文本以及自定义响应头:

abort_if()

abort_if 函数在给定布尔表达式为 true 时抛出 HTTP 异常:

abort 一样,你还可以传递异常响应文本作为第三个参数以及自定义响应头数组作为第四个参数。

abort_unless()

abort_unless 函数在给定布尔表达式为 false 时抛出 HTTP 异常:

abort 一样,你还可以传递异常响应文本作为第三个参数以及自定义响应头数组作为第四个参数。

app()

app 函数返回服务容器实例:

还可以传递类或接口名从容器中解析它:

auth()

auth 函数返回一个认证器实例,为方便起见你可以用其取代 Auth 门面:

如果需要的话还可以指定你想要使用的 guard 实例:

back()

back 函数生成HTTP 重定向响应到用户前一个访问页面:

bcrypt()

bcrypt 函数使用 Bcrypt 对给定值进行哈希,你可以用其替代 Hash 门面:

blank()

blank 函数返回给定值是否为空:

blank 相对的是 filled 函数。

broadcast()

broadcast 函数广播给定事件到监听器:

cache()

cache 函数可以用于从缓存中获取值,如果给定 key 在缓存中不存在,可选的默认值会被返回:

你可以通过传递数组键值对到函数来添加数据项到缓存。还需要传递缓存有效期(秒数):

class_uses_recursive()

class_uses_recursive 函数某个类所使用的所有 trait,包括子类使用的:

collect()

collect 函数会根据提供的数据项创建一个集合

config()

config 函数获取配置变量的值,配置值可以通过使用”.”号访问,包含文件名以及你想要访问的选项。如果配置选项不存在的话默认值将会被指定并返回:

辅助函数 config 还可以用于在运行时通过传递键值对数组设置配置变量值:

cookie()

cookie 函数可用于创建一个新的 Cookie 实例:

csrf_field()

csrf_field 函数生成一个包含 CSRF 令牌值的 HTML 隐藏字段,例如,使用Blade语法示例如下:

csrf_token()

csrf_token 函数获取当前 CSRF 令牌的值:

dd()

dd 函数输出给定变量值并终止脚本执行:

如果你不想停止脚本的运行,可以使用 dump 函数。

decrypt()

decrypt 函数使用 Laravel 加密器对给定值进行解密:

dispatch()

dispatch 函数推送一个新的任务到 Laravel 任务队列

dispatch_now()

dispatch_now 函数会立即运行给定任务并返回 handle 方法处理结果:

dump()

dump 函数会打印给定变量:

如果你想要在打印变量后终止脚本执行,可以使用 dd 函数替代之。

注:你可以使用 Artisan 的 dump-server 命令拦截所有 dump 调用并在控制台窗口显示它们。

encrypt()

encrypt 函数使用 Laravel 加密器加密给定字符串:

env()

env 函数获取环境变量值或返回默认值:

注:如果你在开发过程中执行了 config:cache 命令,需要确保只在配置文件中调用了 env,一旦配置被缓存起来,.env 文件将不会被加载,因此所有对 env 函数的调用都会返回 null

event()

event 函数分发给定事件到对应监听器:

factory()

factory 函数为给定类、名称和数量创建模型工厂构建器,可用于测试数据填充

filled()

filled 函数会返回给定值是否不为空:

filled 相对的是 blank 函数。

info()

info 函数会记录信息到日志系统

还可以传递上下文数据数组到该函数:

logger()

logger 函数可以用于记录 debug 级别的日志消息:

同样,也可以传递上下文数据数组到该函数:

如果没有值传入该函数的话会返回日志实例:

method_field()

method_field 函数生成包含 HTTP 请求方法的 HTML hidden 表单字段,例如:

now()

now 函数为当前时间创建一个新的 Illuminate\Support\Carbon 实例:

old()

old 函数获取存放在一次性 Session 中上一次输入的值:

optional()

optional 函数接收任意参数并允许你访问对象上的属性或调用其方法。如果给定的对象为空,属性或方法调用返回 null 而不是出错:

optional 函数还可以接收一个闭包作为第二个参数,闭包会在第一个参数值不为空的情况下调用:

policy()

policy 函数为给定模型类获取对应策略实例:

redirect()

redirect 函数返回 HTTP 重定向响应,如果不带参数的话返回重定向器示例:

report()

report 函数会使用异常处理器report 方法报告异常:

request()

request 函数返回当前请求实例或者获取一个输入项:

rescue()

rescue 函数可以执行给定闭包并捕获执行过程中的所有异常。这些捕获的异常会发送给异常处理器的 report 方法,不过,请求会继续执行:

还可以传递第二个参数到 rescue 函数,作为在执行闭包出现异常的情况下返回的默认值:

resolve()

resolve 函数使用服务容器将给定类或接口名解析为对应绑定实例:

response()

response 函数创建一个响应实例或者获取响应工厂实例:

retry()

retry 函数尝试执行给定回调直到达到最大执行次数,如果回调没有抛出异常,会返回对应的返回值。如果回调抛出了异常,会自动重试。如果超出最大执行次数,异常会被抛出:

session()

session 函数可以用于获取/设置 Session 值:

可以通过传递键值对数组到该函数的方式设置 Session 值:

如果没有传入参数到 session 函数则返回 Session 存储器对象实例:

tap()

tap 函数接收两个参数:任意的 $value 和一个闭包。$value 会被传递到闭包然后通过 tap 函数返回。闭包返回值与函数返回值不相关:

如果没有传入闭包到 tap 函数,那么你可以调用给定 $value 上面的任意方法,调用方法的返回值永远都是 $value,不管在方法中定义的返回值是什么。例如,Eloquent update 方法通常返回一个整型,不过,我们可以通过 tap 函数强制该方法返回模型本身:

throw_if()

throw_if 函数会在给定布尔表达式为 true 的情况下抛出给定异常:

throw_unless()

throw_unless 函数会在给定布尔表达式为 false 的情况下抛出给定异常:

today()

today 函数会为当前日期创建一个新的 Illuminate\Support\Carbon 实例:

trait_uses_recursive()

trait_uses_recursive 函数会返回某个 trait 使用的所有 trait:

transform()

transform 函数会在给定值不为空的情况下执行闭包并返回闭包结果:

默认值或者闭包可以以第三个参数的方式传递给该函数,默认值在给定值为空的情况下返回:

validator()

validator 函数通过给定参数创建一个新的验证器实例,为方便起见可以使用它代替 Validator 门面:

value()

value 函数返回给定的值,不过,如果你传递一个闭包到该函数,该闭包将会被执行并返回执行结果:

view()

view 函数获取一个视图实例:

with()

with 函数返回给定的值,如果第二个参数是闭包,则返回闭包执行结果:


<< 上一篇: 文件存储

>> 下一篇: 邮件