laravel 基础教程 —— 帮助方法

帮助方法

简介

Laravel 包含了多中“帮手” PHP 函数,很多方法都在框架中进行了使用,如果你发现他们很方便,你也可以在自己的应用中使用。

方法名单

数组

array_add()

array_add 方法用来在数组中添加键值对,它仅会在数组中不存在所给定的键时才会添加:

$array = array_add(['name' => 'Desk'], 'price', 100);

// ['name' => 'Desk', 'price' => 100]

array_collapse()

array_collapse 方法会将坍塌数组到一个单一的数组中。

$array = array_collapse([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

// [1, 2, 3, 4, 5, 6, 7, 8, 9]

array_divide()

array_divide 方法将会分列数组,它会返回两个数组,一个数组包含了原数组的所有的键,另一个数组包含原数组所有的值:

list($keys, $values) = array_divide(['name' => 'Desk']);

// $keys: ['name']

// $values: ['Desk']

array_dot()

array_dot 方法将数组从多维降低为一维数组,它使用 . 符号来表明其深度:

$array = array_dot(['foo' => ['bar' => 'baz']]);

// ['foo.bar' => 'baz'];

array_except()

array_except 方法从数组中移除指定的键值对:

$array = ['name' => 'Desk', 'price' => 100];

$array = array_except($array, ['price']);

// ['name' => 'Desk']

array_first()

array_first 方法返回数组回调迭代中第一个返回真值的元素:

$array = [100, 200, 300];

$value = array_first($array, function ($key, $value) {
  return $value >= 150; 
});

// 200

你也可以在第三个参数中传递一个默认值,如果迭代结束仍未返回真值,将返回默认值:

$value = array_first($array, $callback, $default);

array_flatten()

array_flatten 方法会将多维数组降为一维数组:

$array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']];

$array = array_flatten($array);

// ['Joe', 'PHP', 'Ruby'];

array_forget()

array_forget 方法可以使用 . 语法来删除数组中嵌套的键值对:

$array = ['products' => ['desk' => ['price' => 100]]];

array_forget($array, 'products.desk');

// ['products' => []]

array_get()

array_get 方法可以使用 . 语法来从数组中检索嵌套的值:

$array = ['products' => ['desk' => ['price' => 100]]];

$value = array_get($array, 'products.desk');

// ['price' => 100]

array_get 方法也可以接收第三个参数,用来作为默认值,如果数组中并没有检索到相应的值,将会返回默认值:

$value = array_get($array, 'names.john', 'default');

array_has()

array_has 方法允许使用 . 语法来检查数组中是否含有给定的项:

$array = ['products' => ['desk' => ['price' => 100]]];

$hasDesk = array_has($array, 'products.desk');

// true

array_only()

array_only 方法会给定的数组中返回指定的键值对:

$array = ['name' => 'Desk', 'price' => 100, 'orders' => 10];

$array = array_only($array, ['name', 'price']);

// ['name' => 'Desk', 'price' => 100]

array_pluck()

array_pluck 方法摘取数组中所给定的键值对:

$array = [
  ['developer' => ['id' => 1, 'name' => 'Taylor']],
  ['developer' => ['id' => 2, 'name' => 'Abigail']],
];

$array = array_pluck($array, 'developer.name');

// ['Taylor', 'Abigail'];

你可以可以指定希望返回的结果如何键化:

$array = array_pluck($array, 'developer.name', 'developer.id');

// [1 => 'Taylor', 2 => 'Abigail'];

array_prepend()

array_prepend 方法会在数组的起始端加入项:

$array = ['one', 'two', 'three', 'four'];

$array = array_prepend($array, 'zero');

// $array: ['zero', 'one', 'two', 'three', 'four']

array_pull()

array_pull 方法从数组中返回键值对并将其在数组中进行剔除:

$array = ['name' => 'Desk', 'price' => 100];

$name = array_pull($array, 'name')

// $name: Desk
// $array: ['price' => 100]

array_set()

array_set 方法使用 . 语法对数组中的项进行设置值:

$array = ['products' => ['desk' => ['price' => 100]]];

array_set($array, 'products.desk.price', 200);

// ['products' => ['desk' => ['price' => 200]]]

array_sort()

array_sort 方法会根据给定闭包所返回的结果对数组进行排序:

$array = [
  ['name' => 'Desk'],
  ['name' => 'Chair'],
];

$array = array_values(array_sort($array, function ($value) {
  return $value['name'];
}));

/*
   [
    ['name' => 'Chair'],
    ['name' => 'Desk'],
   ]
 */

array_sort_recursive()

array_sort_recursive 方法会对数组进行递归的使用 sort 方法排序:

$array = [
  [
    'Roman',
    'Taylor',
    'Li',
  ],
  [
    'PHP',
    'Ruby',
    'JavaScript',
  ],
];

$array = array_sort_recursive($array);

/*
  [
    [
      'Li',
      'Roman',
      'Taylor',
    ],
    [
      'JavaScript',
      'PHP',
      'Ruby',
    ],
  ];
 */

array_where()

array_where 方法会根据给定的闭包对数组进行过滤:

$array = [100, '200', 300, '400', 500];

$array = array_where($array, function ($key, $value) {
  return is_string($value);
});

// [1 => 200, 3 => 400]

head()

head 方法简单的从数组中返回其首个元素:

$array = [100, 200, 300];

$first = head($array);

// 100

last()

last 方法返回所给定数组中的最后一个元素:

$array = [100, 200, 300];

$last = last($array);

// 300

Paths

app_path()

app_path 方法返回 app 目录的完整路径:

$path = app_path();

你也可以使用 app_path 方法来生成相对于应用目录的完整路径:

$path = app_path('Http/Controllers/Controller.php');

base_path()

base_path 方法返回项目根目录的完整路径:

$path = base_path();

你也可以使用 base_path 方法来返回相对于根目录的完整路径:

$path = base_path('vendor/bin');

config_path()

config_path 方法用来返回应用的配置文件目录的完整路径:

$path = config_path();

database_path()

database_path 方法返回应用的数据库目录的完整路径:

$path = database_path();

elixir()

elixir 方法返回版本化的文件路径:

elixir($file);

public_path()

public_path 方法返回 public 目录的完整路径:

$path = public_path();

storage_path()

storage_path 方法返回 storage 目录的完整路径:

$path = storage_path();

你也可以使用 storage_path 方法来生成相对目录的完整路径:

$path = storage_path('app/file.txt');

Strings

camel_case()

camel_case 方法将给定字符串转换成 camelCase 格式:

$camel = camel_case('foo_bar');

// fooBar

class_basename()

class_basename 反回所给定类移除命名空间之后的类名:

$class = class_basename('Foo\Bar\Baz');

// Baz

e()

e 方法使用 htmlentities 方法来过滤给定字符串:

echo e('foo');

// <html>foo</html>

ends_with()

ends_with 方法用来判断给定的字符串是否以给定的值结尾:

$value = ends_with('This is my name', 'name');

// true

snake_case()

snake_case 方法将字符串转换成 snake_case 格式:

$snake = snake_case('fooBar');

// foo_bar

str_limit()

str_limit 方法用来限制字符串的长度。该方法的第一个参数应该是一个字符串,而第二个参数应该是允许返回结果的最大长度:

$value = str_limit('The PHP framework for web artisans.', 7);

// The PHP...

starts_with()

starts_with 方法用来判断给定的字符串是否已给定的值起始:

$value = starts_with('This is my name', 'This');

// true

str_finish()

str_finish 方法可以在字符串的结尾添加独特的值(如果字符串不是以该值结尾):

$string = str_finish('this/string', '/');

// this/string/

str_is()

str_is 方法用来判断给定的字符串是否匹配给定的模式。可以使用星号作为通配符:

$value = str_is('foo*', 'foobar');

// true

$value = str_is('baz*', 'foobar');

// false

str_plural()

str_plural 方法将字符串转换为其相应的复数形式,该方法目前只支持英语:

$plural = str_plural('car');

// cars

$plural = str_plural('child');

// children

你可以传递一个整型值到第二个参数来表明返回单数或复数形式:

$plural = str_plural('child', 2);

// children

$plural = str_plural('child', 1);

// child

str_random()

str_random 方法根据指定的长度生成随机字符串:

$string = str_random(40);

str_singular()

str_singular 方法将字符串转换为单数形式,目前只支持英语:

$singular = str_singular('cars');

// car

str_slug()

str_slug 方法使用给定的胶连字符对给定的字符串生成 URL:

$title = str_slug('Laravel 5 Framework', '-');

// laravel-5-framework

studly_case()

studly_case 方法转换给定的字符串到 StudlyCase 格式:

$value = studly_case('foo_bar');

// FooBar

trans()

trans 方法根据本地文件中的语言来进行翻译:

echo trans('validation.required');

trans_choice()

trans_choice 方法来转义到给定的语言,并使用相应的单复数形式:

$value = trans_choice('foo.bar', $count);

URLs

action()

action 方法根据给定的控制器动作生成相应的 URL。你不需要传递完整的命名空间。默认的所传递的控制器类名是相对于 App\Http\Controllers 的命名空间:

$url = action ('HomeController@getIndex');

如果方法接受路由参数,你可以传递第二个参数到该方法:

$url = action('UserController@profile', ['id' => 1]);

asset()

根据当前的请求方式来返回指定资源的地址:

$url = asset('img/photo.jpg');

secure_asset()

使用 HTTPS 生成给定资源的 URL:

echo secure_asset('foo/bar.zip', $title, $attributes = []);

route()

route 方法根据给定的路由名称来生成 URL:

$url = route('routeName');

如果路由接受参数,你可以传递第二个参数到方法:

$url = route('routeName', ['id' => 1]);

url()

url 方法根据指定的路径生成完整的路径:

echo url('user/profile');

echo url('user/profile', [1]);

如果没有路径指定,将返回 Illuminate\Routing\UrlGenerator 的实例:

echo url()->current();
echo url()->full();
echo url()->previous();

Miscellaneous

auth()

auth 方法返回一个认证实例。你可以方便的替换 Auth 假面:

$user = auth()->user();

back()

back 方法生成重定向响应到用户之前的地址:

return back();

bcrypt()

bcrypt 方法使用 Bcrypt 加密来哈希化给定的值。你也可以通过 Hash 假面来调用:

$password = bcrypt('my-secret-password');

collect()

collect 方法根据给定的项目组来生成 collection 实例:

$collection = collect(['taylor', 'abigail']);

config()

config 根据给定的值来获取配置项的值。你可以使用 . 语法来获取配置项的值。也可以传递第二个参数作为配置项未找到时的默认值:

$value = config('app.timezone');

$value = config('app.timezone', $default);

你也可以在运行时使用键值对的方式对配置进行设置:

config(['app.debug' => true]);

csrf_field()

csrf_field 方法用来生成一个 hidden 文本框字段来包含 CSRF token。你可以在 Blade 模板中使用:

{{ csrf_field() }}

csrf_token()

csrf_token 方法返回当前的 CSRF token 值:

$token = csrf_token();

dd()

dd 方法打印输出给定的变量并终止执行之后的代码:

dd($value);

如果你不想停止执行之后的代码,你应该使用 dump 方法:

dump($value);

dispatch()

dispatch 方法在 laravel 的任务对了中添加一个新的任务:

dispatch(new App\Jobs\SendEmails);

env()

env 方法用来获取环境变量,也可以在未设置环境变量时返回默认值:

$env = env('APP_ENV');

// Return a default value if the variable doesn't exist...
$env = env('APP_ENV', 'production');

event()

event 方法分发给定的事件到它的监听器中:

event(new UserRegistered($user));

factory()

factory 方法创建一个模型工厂构造器来生成给定的类名的实例。你可以在写单元测试或者 seeding 时使用:

$user = factory(App\User::class)->make();

method_field()

method_field 方法生成一个 hidden 文本框来包含一个欺骗性的 HTTP 请求动词。你可以在 Blade 模板中使用:

{{ method_field('DELETE') }}

old()

old 方法返回 session 中闪存的旧的文本值:

$value = old('value');

$value = old('value', 'default');

redirect()

redirect 方法返回一个重定向的实例来做重定向响应:

return redirect('/home');

request()

request 方法返回当前的请求实例或者检索请求中的输入项:

$request = request();

$value = request('key', $default = null)

response()

response 方法生成一个响应实例或者从响应工厂中获得一个实例:

return response('Hello World', 200, $headers);

return response()->json(['foo' => 'bar'], 200, $headers);

session()

session 方法可以用来获取或者设置 session 值:

$value = session('key');

你可以通过传递键值对来进行 session 值的设置:

session(['chairs' => 7, 'instruments' => 3]);

如果调用的是无参数的 session 方法,将返回 session 存储器:

$value = session()->get('key');

session()->put('key', $value);

value()

value 方法会简单的返回所给定的值。但是,如果你传递的是一个 ClosureClosure 将会被执行,其结果将被返回:

$value = value(function () {
  return 'bar';
});

view()

view 方法用来检索 view 实例:

return view('auth.login');

with()

with 方法返回给定的值。它主要用于方法的链式调用:

$value = with(new Foo)->work();

你可能感兴趣的:(laravel 基础教程 —— 帮助方法)