헬퍼 함수들

시작하기

라라벨은 다양한 글로벌 "헬퍼" PHP 함수들을 포함하고 있습니다. 그중 많은 기능은 프레임워크가 스스로 사용하지만, 여러분의 어플리케이션에도 자유롭게 사용하실 수 있습니다.

사용 가능한 메소드

배열 & 객체

경로

문자열

Fluent Strings

URLs

기타

메소드 목록

배열 & 객체

Arr::accessible() {#collection-method .first-collection-method}

Arr::accessible 메소드는 주어진 값이 배열에 접근할 수 있는지 확인합니다.

use Illuminate\Support\Arr;
use Illuminate\Support\Collection;

$isAccessible = Arr::accessible(['a' => 1, 'b' => 2]);

// true

$isAccessible = Arr::accessible(new Collection);

// true

$isAccessible = Arr::accessible('abc');

// false

$isAccessible = Arr::accessible(new stdClass);

// false

Arr::add() {.collection-method}

Arr::add 메소드는 배열 내에 키가 존재하지 않거나 null이면 주어진 key / value 쌍을 배열에 추가합니다.

use Illuminate\Support\Arr;

$array = Arr::add(['name' => 'Desk'], 'price', 100);

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

$array = Arr::add(['name' => 'Desk', 'price' => null], 'price', 100);

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

Arr::collapse() {.collection-method}

Arr::collapse 메소드는 배열들의 배열(여러 개의 배열)을 하나의 배열로 통합합니다.

use Illuminate\Support\Arr;

$array = Arr::collapse([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);

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

Arr::crossJoin() {.collection-method}

Arr::crossJoin 메소드는 주어진 배열을 교차 결합하여 가능한 모든 순열이 있는 데카르트 곱을 반환합니다.

use Illuminate\Support\Arr;

$matrix = Arr::crossJoin([1, 2], ['a', 'b']);

/*
    [
        [1, 'a'],
        [1, 'b'],
        [2, 'a'],
        [2, 'b'],
    ]
*/

$matrix = Arr::crossJoin([1, 2], ['a', 'b'], ['I', 'II']);

/*
    [
        [1, 'a', 'I'],
        [1, 'a', 'II'],
        [1, 'b', 'I'],
        [1, 'b', 'II'],
        [2, 'a', 'I'],
        [2, 'a', 'II'],
        [2, 'b', 'I'],
        [2, 'b', 'II'],
    ]
*/

Arr::divide() {.collection-method}

Arr::divide 메소드는 주어진 배열에서 키들을 담고 있는 배열과 값들을 담고 있는 배열, 총 2개의 배열을 반환합니다.

use Illuminate\Support\Arr;

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

// $keys: ['name']

// $values: ['Desk']

Arr::dot() {.collection-method}

Arr::dot 메소드는 다차원 배열을 "점(.)"으로 배열 깊이를 표기하면서 단일 레벨의 배열로 만듭니다.

use Illuminate\Support\Arr;

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

$flattened = Arr::dot($array);

// ['products.desk.price' => 100]

Arr::except() {.collection-method}

Arr::except 메소드는 주어진 키 / 값 쌍을 배열에서 제거합니다.

use Illuminate\Support\Arr;

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

$filtered = Arr::except($array, ['price']);

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

Arr::exists() {.collection-method}

Arr::exists 메소드는 주어진 키가 제공된 배열에 있는지 확인합니다.

use Illuminate\Support\Arr;

$array = ['name' => 'John Doe', 'age' => 17];

$exists = Arr::exists($array, 'name');

// true

$exists = Arr::exists($array, 'salary');

// false

Arr::first() {.collection-method}

Arr::first 메소드는 전달된 배열 중 주어진 조건을 만족하는 첫 번째 요소를 반환합니다.

use Illuminate\Support\Arr;

$array = [100, 200, 300];

$first = Arr::first($array, function ($value, $key) {
    return $value >= 150;
});

// 200

메소드에 세번째 인자로 기본값을 지정할 수 있습니다. 배열의 어떠한 값도 조건을 통과하지 못했을 때 이 값이 반환됩니다.

use Illuminate\Support\Arr;

$first = Arr::first($array, $callback, $default);

Arr::flatten() {.collection-method}

Arr::flatten 메소드는 다차원 배열을 단일 레벨의 1차원 배열로 만듭니다.

use Illuminate\Support\Arr;

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

$flattened = Arr::flatten($array);

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

Arr::forget() {.collection-method}

Arr::forget 메소드는 "점(.)" 표기법을 사용하여 중첩 배열로부터 주어진 키 / 값 쌍을 제거합니다.

use Illuminate\Support\Arr;

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

Arr::forget($array, 'products.desk');

// ['products' => []]

Arr::get() {.collection-method}

Arr::get 메소드는 "점(.)" 표기법으로 중첩 배열로부터 주어진 값을 찾습니다.

use Illuminate\Support\Arr;

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

$price = Arr::get($array, 'products.desk.price');

// 100

Arr::get 메소드는 특정 키를 찾지 못한 경우 반환되는 기본값을 지정할 수도 있습니다.

use Illuminate\Support\Arr;

$discount = Arr::get($array, 'products.desk.discount', 0);

// 0

Arr::has() {.collection-method}

Arr::has 메소드는 "점(.)" 표기를 이용하여 배열에 주어진 아이템 또는 아이템들이 존재하는지 확인합니다.

use Illuminate\Support\Arr;

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

$contains = Arr::has($array, 'product.name');

// true

$contains = Arr::has($array, ['product.price', 'product.discount']);

// false

Arr::hasAny() {.collection-method}

Arr::hasAny 메소드는 "점(.)" 표기를 이용하여 주어진 세트의 항목이 배열에 존재하는지 확인합니다.

use Illuminate\Support\Arr;

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

$contains = Arr::hasAny($array, 'product.name');

// true

$contains = Arr::hasAny($array, ['product.name', 'product.discount']);

// true

$contains = Arr::hasAny($array, ['category', 'product.discount']);

// false

Arr::isAssoc() {.collection-method}

주어진 배열이 연관 배열이면 Arr::isAssoc 메소드는 true를 반환합니다. 배열은 0으로 시작하는 순차적 숫자 키가 없는 경우 "연관-associative"로 간주됩니다.

use Illuminate\Support\Arr;

$isAssoc = Arr::isAssoc(['product' => ['name' => 'Desk', 'price' => 100]]);

// true

$isAssoc = Arr::isAssoc([1, 2, 3]);

// false

Arr::isList() {.collection-method}

Arr::isList 메소드는 주어진 배열의 키가 0으로 부터 시작하는 순차적인 정수인 경우 true 를 반환합니다.

use Illuminate\Support\Arr;

$isList = Arr::isList(['foo', 'bar', 'baz']);

// true

$isList = Arr::isList(['product' => ['name' => 'Desk', 'price' => 100]]);

// false

Arr::join() {.collection-method}

Arr::join 메서드는 배열 요소를 문자열로 합쳐줍니다. 이 메서드의 두 번째 인자를 이용하여 배열의 마지막 요소에 대한 결합 문자를 지정할 수도 있습니다.

use Illuminate\Support\Arr;

$array = ['Tailwind', 'Alpine', 'Laravel', 'Livewire'];

$joined = Arr::join($array, ', ');

// Tailwind, Alpine, Laravel, Livewire

$joined = Arr::join($array, ', ', ' and ');

// Tailwind, Alpine, Laravel and Livewire

Arr::keyBy() {.collection-method}

Arr::keyBy 메소드는 주어진 키의 값을 키로 사용한 새로운 배열을 반환합니다. 여러개의 아이템이 동일한 키를 가지는 경우 새로운 배열에는 가장 마지막 값이 나타납니다.

use Illuminate\Support\Arr;

$array = [
    ['product_id' => 'prod-100', 'name' => 'Desk'],
    ['product_id' => 'prod-200', 'name' => 'Chair'],
];

$keyed = Arr::keyBy($array, 'product_id');

/*
    [
        'prod-100' => ['product_id' => 'prod-100', 'name' => 'Desk'],
        'prod-200' => ['product_id' => 'prod-200', 'name' => 'Chair'],
    ]
*/

Arr::last() {.collection-method}

Arr::last 메소드는 전달된 조건을 통과하는 아이템의 가장 마지막 요소를 반환합니다.

use Illuminate\Support\Arr;

$array = [100, 200, 300, 110];

$last = Arr::last($array, function ($value, $key) {
    return $value >= 150;
});

// 300

메소드의 세 번째 인자로 기본값을 전달할 수 있습니다. 이 값은 조건을 통과하는 값이 없을 때 반환됩니다.

use Illuminate\Support\Arr;

$last = Arr::last($array, $callback, $default);

Arr::map() {.collection-method}

이 Arr::map메서드는 배열을 반복하고 각 값과 키를 지정된 콜백에 전달합니다. 배열 값은 콜백에서 반환된 값으로 대체됩니다.

use Illuminate\Support\Arr;

$array = ['first' => 'james', 'last' => 'kirk'];

$mapped = Arr::map($array, function ($value, $key) {
    return ucfirst($value);
});

// ['first' => 'James', 'last' => 'Kirk']

Arr::only() {.collection-method}

Arr::only 메소드는 특정한 키 / 값 쌍만을 배열로부터 반환합니다.

use Illuminate\Support\Arr;

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

$slice = Arr::only($array, ['name', 'price']);

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

Arr::pluck() {.collection-method}

Arr::pluck 메소드는 배열로부터 주어진 키 / 값 쌍의 리스트를 조회합니다.

use Illuminate\Support\Arr;

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

$names = Arr::pluck($array, 'developer.name');

// ['Taylor', 'Abigail']

리스트가 만들어 지는 결과가 어떻게 키로 변환될지 지정할 수도 있습니다.

use Illuminate\Support\Arr;

$names = Arr::pluck($array, 'developer.name', 'developer.id');

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

Arr::prepend() {.collection-method}

Arr::prepend 메소드는 배열의 시작 부분에 아이템을 추가할 것입니다.

use Illuminate\Support\Arr;

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

$array = Arr::prepend($array, 'zero');

// ['zero', 'one', 'two', 'three', 'four']

필요한 경우, 아이템의 키를 지정할 수도 있습니다.

use Illuminate\Support\Arr;

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

$array = Arr::prepend($array, 'Desk', 'name');

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

Arr::prependKeysWith() {.collection-method}

Arr::prependKeysWith 메서드는 사용하여 연관 배열의 모든 키 이름 앞에 주어진 접두사를 추가합니다.

use Illuminate\Support\Arr;

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

$keyed = Arr::prependKeysWith($array, 'product.');

/*
    [
        'product.name' => 'Desk',
        'product.price' => 100,
    ]
*/

Arr::pull() {.collection-method}

Arr::pull 메소드는 배열에서 주어진 키 / 값 쌍을 반환함과 동시에 제거합니다.

use Illuminate\Support\Arr;

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

$name = Arr::pull($array, 'name');

// $name: Desk

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

메소드의 세 번째 인자로 기본값을 전달할 수 있습니다. 키가 존재하지 않는 경우 이 값이 반환됩니다.

use Illuminate\Support\Arr;

$value = Arr::pull($array, $key, $default);

Arr::query() {.collection-method}

Arr::query 메소드는 배열을 쿼리 스트링으로 변환합니다.

use Illuminate\Support\Arr;

$array = ['name' => 'Taylor', 'order' => ['column' => 'created_at', 'direction' => 'desc']];

Arr::query($array);

// name=Taylor&order[column]=created_at&order[direction]=desc

Arr::random() {.collection-method}

Arr::random 메소드는 배열에서 임의의 값을 반환합니다.

use Illuminate\Support\Arr;

$array = [1, 2, 3, 4, 5];

$random = Arr::random($array);

// 4 - (retrieved randomly)

두 번째 인자로 몇 개의 아이템을 반환할지 값을 지정할 수 있습니다. 이 인자를 지정하면, 하나의 아이템이 포함되더라도 배열이 반환됩니다.

use Illuminate\Support\Arr;

$items = Arr::random($array, 2);

// [2, 5] - (retrieved randomly)

Arr::set() {.collection-method}

Arr::set 메소드는 "점(.)" 표기법을 이용하여 중첩된 배열 내에 값을 설정합니다.

use Illuminate\Support\Arr;

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

Arr::set($array, 'products.desk.price', 200);

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

Arr::shuffle() {.collection-method}

Arr::shuffle 메소드는 배열의 항목을 무작위로 섞습니다.

use Illuminate\Support\Arr;

$array = Arr::shuffle([1, 2, 3, 4, 5]);

// [3, 2, 5, 1, 4] - (generated randomly)

Arr::sort() {.collection-method}

Arr::sort 메소드는 배열값을 정렬합니다.

use Illuminate\Support\Arr;

$array = ['Desk', 'Table', 'Chair'];

$sorted = Arr::sort($array);

// ['Chair', 'Desk', 'Table']

또한, 주어진 클로저의 결괏값으로 배열을 정렬할 수 있습니다.

use Illuminate\Support\Arr;

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

$sorted = array_values(Arr::sort($array, function ($value) {
    return $value['name'];
}));

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

Arr::sortDesc() {.collection-method}

Arr::sortDesc 메소드는 배열값을 내림차순 정렬합니다.

use Illuminate\Support\Arr;

$array = ['Desk', 'Table', 'Chair'];

$sorted = Arr::sortDesc($array);

// ['Table', 'Desk', 'Chair']

또한, 주어진 클로저의 결괏값으로 배열을 정렬할 수 있습니다.

use Illuminate\Support\Arr;

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

$sorted = array_values(Arr::sortDesc($array, function ($value) {
    return $value['name'];
}));

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

Arr::sortRecursive() {.collection-method}

Arr::sortRecursive 메소드는 순차적 하위 배열을 위한 sort 함수와 연관 하위 배열을 위한 ksort 함수를 사용하여 배열을 재귀적으로 정렬합니다.

use Illuminate\Support\Arr;

$array = [
    ['Roman', 'Taylor', 'Li'],
    ['PHP', 'Ruby', 'JavaScript'],
    ['one' => 1, 'two' => 2, 'three' => 3],
];

$sorted = Arr::sortRecursive($array);

/*
    [
        ['JavaScript', 'PHP', 'Ruby'],
        ['one' => 1, 'three' => 3, 'two' => 2],
        ['Li', 'Roman', 'Taylor'],
    ]
*/

Arr::toCssClasses() {.collection-method}

Arr::toCssClasses 메소드는 CSS class 문자열을 조건부로 컴파일합니다. 이 메소드는 추가하려는 클래스가 key이며 이에 대한 value가 boolean 값인 클래스 배열을 전달 받습니다. 만약 배열 요소가 숫자 키를 갖고 있다면, 이 클래스는 항상 렌더링 된 클래스 리스트에 포함됩니다.

use Illuminate\Support\Arr;

$isActive = false;
$hasError = true;

$array = ['p-4', 'font-bold' => $isActive, 'bg-red' => $hasError];

$classes = Arr::toCssClasses($array);

/*
    'p-4 bg-red'
*/

이 메소드는 @class 블레이드 지시어 뿐만 아니라 라라벨의 기본 / 병합 속성 기능을 강화시킵니다.

Arr::undot() {.collection-method}

Arr::undot 메소드는 점(.) 표기법을 사용하는 단일 차원 배열을 다차원 배열로 변환합니다.

use Illuminate\Support\Arr;

$array = [
    'user.name' => 'Kevin Malone',
    'user.occupation' => 'Accountant',
];

$array = Arr::undot($array);

// ['user' => ['name' => 'Kevin Malone', 'occupation' => 'Accountant']]

Arr::where() {.collection-method}

Arr::where 메소드는 주어진 클로져를 사용하여 배열을 필터링합니다.

use Illuminate\Support\Arr;

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

$filtered = Arr::where($array, function ($value, $key) {
    return is_string($value);
});

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

Arr::whereNotNull() {.collection-method}

Arr::whereNotNull 메소드는 배열 내의 모든 null 값을 제거합니다.

use Illuminate\Support\Arr;

$array = [0, null];

$filtered = Arr::whereNotNull($array);

// [0 => 0]

Arr::wrap() {.collection-method}

Arr::wrap 메소드는 주어진 값을 배열로 만듭니다. 만약 함수에 전달된 값이 배열이라면 결과에는 변경사항이 없습니다.

use Illuminate\Support\Arr;

$string = 'Laravel';

$array = Arr::wrap($string);

// ['Laravel']

주어진 값이 null인 경우, 빈 배열이 반환됩니다.

use Illuminate\Support\Arr;

$nothing = null;

$array = Arr::wrap($nothing);

// []

data_fill() {.collection-method}

data_fill 함수는 "점(.)" 표기법을 사용하여 중첩된 배열 또는 객체 내부에 빠진 값을 채워 넣습니다.

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

data_fill($data, 'products.desk.price', 200);

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

data_fill($data, 'products.desk.discount', 10);

// ['products' => ['desk' => ['price' => 100, 'discount' => 10]]]

이 함수는 또한 별표를 와일드카드로 받아들여 해당하는 대상을 채워넣습니다.

$data = [
    'products' => [
        ['name' => 'Desk 1', 'price' => 100],
        ['name' => 'Desk 2'],
    ],
];

data_fill($data, 'products.*.price', 200);

/*
    [
        'products' => [
            ['name' => 'Desk 1', 'price' => 100],
            ['name' => 'Desk 2', 'price' => 200],
        ],
    ]
*/

data_get() {.collection-method}

data_get 함수는 "점(.)" 표기법을 사용하여 중첩된 배열 또는 객체 안에서 값을 조회합니다.

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

$price = data_get($data, 'products.desk.price');

// 100

data_get 함수는 또한 지정된 키를 찾을 수 없는 경우 반환될 기본값을 인자로 받습니다.

$discount = data_get($data, 'products.desk.discount', 0);

// 0

이 함수는 배열이나 객체의 키를 대상으로 별표를 이용한 와일드 카드도 허용합니다.

$data = [
    'product-one' => ['name' => 'Desk 1', 'price' => 100],
    'product-two' => ['name' => 'Desk 2', 'price' => 150],
];

data_get($data, '*.name');

// ['Desk 1', 'Desk 2'];

data_set() {.collection-method}

data_set 함수는 "점(.)" 표기법을 사용하여 중첩된 배열 또는 객체 안의 값을 설정합니다.

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

data_set($data, 'products.desk.price', 200);

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

또한, 이 함수는 별표를 와일드 카드로 받아들여 해당하는 대상을 설정합니다.

$data = [
    'products' => [
        ['name' => 'Desk 1', 'price' => 100],
        ['name' => 'Desk 2', 'price' => 150],
    ],
];

data_set($data, 'products.*.price', 200);

/*
    [
        'products' => [
            ['name' => 'Desk 1', 'price' => 200],
            ['name' => 'Desk 2', 'price' => 200],
        ],
    ]
*/

기본적으로 기존 값은 덮어 씁니다. 새로운 값을 설정하고자 한다면, 값이 존재하지 않을 때만 네 번째 인자로 false를 전달하면 됩니다.

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

data_set($data, 'products.desk.price', 200, overwrite: false);

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

head() {.collection-method}

head 함수는 배열의 첫 번째 요소를 반환합니다.

$array = [100, 200, 300];

$first = head($array);

// 100

last() {.collection-method}

last 함수는 배열의 마지막 요소를 반환합니다.

$array = [100, 200, 300];

$last = last($array);

// 300

경로

app_path() {.collection-method}

app_path 함수는 app 디렉토리에 대한 절대 경로를 반환합니다. app_path 함수를 사용하면 어플리케이션 디렉토리에서 특정 파일의 절대 경로를 생성할 수도 있습니다.

$path = app_path();

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

base_path() {.collection-method}

base_path 함수는 프로젝트의 루트 디렉토리에 대한 절대 경로를 반환합니다. base_path 함수를 사용하여 프로젝트 루트 디렉토리에 대한 특정 파일의 절대 경로를 생성할 수도 있습니다.

$path = base_path();

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

config_path() {.collection-method}

config_path 함수는 애플리케이션의 config 디렉토리에 대한 절대 경로를 반환합니다. config_path 함수를 사용하여, 어플리케이션의 설정 디렉토리 안에 있는 파일에 대한 절대 경로를 생성할 수도 있습니다.

$path = config_path();

$path = config_path('app.php');

database_path() {.collection-method}

database_path 함수는 애플리케이션의 database 디렉토리에 대한 절대 경로를 반환합니다. database_path 함수를 사용하여, 애플리케이션의 데이터베이스 디렉토리 안에 있는 파일에 대한 절대 경로를 생성할 수도 있습니다.

$path = database_path();

$path = database_path('factories/UserFactory.php');

lang_path() {.collection-method}

lang_path 함수는 애플리케이션의 lang 디렉토리에 대한 절대 경로를 반환합니다. lang_path 함수를 사용하여, 애플리케이션의 데이터베이스 디렉토리 안에 있는 파일에 대한 절대 경로를 생성할 수도 있습니다.

$path = lang_path();

$path = lang_path('en/messages.php');

mix() {.collection-method}

mix 함수는 버전이 지정된 Mix 파일에 대한 경로를 반환합니다.

$path = mix('css/app.css');

public_path() {.collection-method}

public_path 함수는 public 디렉토리에 대한 절대 경로를 반환합니다. public_path 함수를 사용하여, 애플리케이션의 public 디렉토리 안에 있는 파일에 대한 절대 경로를 생성할 수도 있습니다.

$path = public_path();

$path = public_path('css/app.css');

resource_path() {.collection-method}

resource_path 함수는 resources 디렉토리에 대한 절대 경로를 반환합니다. resource_path 함수를 사용하여 리소스 디렉토리 안에 있는 파일에 대한 절대 경로를 생성할 수도 있습니다.

$path = resource_path();

$path = resource_path('sass/app.scss');

storage_path() {.collection-method}

storage_path 함수는 storage 디렉토리에 대한 절대 경로를 반환합니다. storage_path 함수를 사용하여 스토리지 디렉토리 안에 있는 파일에 대한 절대 경로를 생성할 수도 있습니다.

$path = storage_path();

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

문자열

__() {.collection-method}

__ 함수는 주어진 다국어 문자열 또는 다국어 키를 다국어 파일을 사용하여 변환합니다.

echo __('Welcome to our application');

echo __('messages.welcome');

지정된 다국어 문자열이나 키가 존재하지 않는 경우, __ 함수는 주어진 값을 그대로 반환합니다. 따라서 예제와 같이 __ 함수는 다국어 키가 존재하지 않는다면 messages.welcome을 그대로 반환합니다.

class_basename() {.collection-method}

class_basename 함수는 클래스의 네임스페이스를 제거한 클래스의 클래스 명을 반환합니다.

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

// Baz

e() {.collection-method}

e 함수는 주어진 문자열에 PHP의 htmlspecialchars 함수를 double_encode 옵션이 기본적으로 true인 형태로 실행한 결과를 반환합니다.

echo e('<html>foo</html>');

// &lt;html&gt;foo&lt;/html&gt;

preg_replace_array() {.collection-method}

preg_replace_array 함수는 주어진 패턴에 맞는 문자열을 차례대로 배열로 대체합니다.

$string = 'The event will take place between :start and :end';

$replaced = preg_replace_array('/:[a-z_]+/', ['8:30', '9:00'], $string);

// The event will take place between 8:30 and 9:00

Str::after() {.collection-method}

Str::after 메소드는 주어진 값 이후의 모든 것을 반환합니다. 문자열 내에 값이 없으면 전체 문자열이 반환됩니다.

use Illuminate\Support\Str;

$slice = Str::after('This is my name', 'This is');

// ' my name'

Str::afterLast() {.collection-method}

Str::afterLast 메소드는 문자열에서 주어진 값이 마지막으로 나타난 후 모든 것을 반환합니다. 문자열 내에 값이 없으면 전체 문자열이 반환됩니다.

use Illuminate\Support\Str;

$slice = Str::afterLast('App\Http\Controllers\Controller', '\\');

// 'Controller'

Str::ascii() {.collection-method}

Str::ascii 메소드는 문자열을 ASCII 값으로 변환하려고 시도합니다.

use Illuminate\Support\Str;

$slice = Str::ascii('û');

// 'u'

Str::before() {.collection-method}

Str::before 메소드는 문자열에서 주어진 값 이전의 모든 것을 반환합니다.

use Illuminate\Support\Str;

$slice = Str::before('This is my name', 'my name');

// 'This is '

Str::beforeLast() {.collection-method}

Str::beforeLast 메소드는 문자열에서 주어진 값 이전의 모든 것을 반환합니다.

use Illuminate\Support\Str;

$slice = Str::beforeLast('This is my name', 'is');

// 'This '

Str::between() {.collection-method}

Str::between 메소드는 두 값 사이의 문자열 부분을 반환합니다.

use Illuminate\Support\Str;

$slice = Str::between('This is my name', 'This', 'name');

// ' is my '

Str::betweenFirst() {.collection-method}

Str::betweenFirst 메소드는 두 값 사이의 문자열에서 가능한 작은 부분을 반환합니다.

use Illuminate\Support\Str;

$slice = Str::betweenFirst('[a] bc [d]', '[', ']');

// 'a'

Str::camel() {.collection-method}

Str::camel 메소드는 주어진 문자열을 camelCase로 변환합니다.

use Illuminate\Support\Str;

$converted = Str::camel('foo_bar');

// fooBar

Str::contains() {.collection-method}

Str::contains 메소드는 주어진 문자열이 주어진 값을 포함하는지 확인합니다. (대소문자를 구분합니다.)

use Illuminate\Support\Str;

$contains = Str::contains('This is my name', 'my');

// true

또한, 주어진 문자열에 값이 포함되어 있는지 확인하기 위해 배열을 전달할 수도 있습니다.

use Illuminate\Support\Str;

$contains = Str::contains('This is my name', ['my', 'foo']);

// true

Str::containsAll() {.collection-method}

Str::containsAll 메소드는 주어진 문자열에 모든 배열 값이 포함되어 있는지 확인합니다.

use Illuminate\Support\Str;

$containsAll = Str::containsAll('This is my name', ['my', 'name']);

// true

Str::endsWith() {.collection-method}

Str::endsWith 메소드는 주어진 문자열이 주어진 값으로 끝나는지 확인합니다.

use Illuminate\Support\Str;

$result = Str::endsWith('This is my name', 'name');

// true

주어진 문자열이 주어진 값으로 끝나는지 확인하기 위해 배열을 전달할 수도 있습니다.

use Illuminate\Support\Str;

$result = Str::endsWith('This is my name', ['name', 'foo']);

// true

$result = Str::endsWith('This is my name', ['this', 'foo']);

// false

Str::excerpt() {.collection-method}

Str::excerpt 메소드는 해당 문자열 안에서 첫 번째 구문과 일치하는 문자열을 발췌한 결과를 반환합니다.

use Illuminate\Support\Str;

$excerpt = Str::excerpt('This is my name', 'my', [
    'radius' => 3
]);

// '...is my na...'

radius 옵션값은 기본적으로 100 으로 지정되어 있습니다. 이 값을 사용하면 잘린 문자열의 앞뒤에 표시되어야 하는 문자열의 수를 지정할 수 있습니다.

추가적으로 omission 옵션을 사용하여 잘린 문자열 앞뒤로 추가될 문자열의 형식을 변경할 수도 있습니다.

use Illuminate\Support\Str;

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

// '(...) my name'

Str::finish() {.collection-method}

Str::finish 메소드는 문자열이 주어진 값으로 끝나지 않으면 해당 값을 추가합니다.

use Illuminate\Support\Str;

$adjusted = Str::finish('this/string', '/');

// this/string/

$adjusted = Str::finish('this/string/', '/');

// this/string/

Str::headline() {.collection-method}

Str::headline 메소드는 대/소문자, 하이픈(-), 언더스코어(_)가 구분자인 문자열을 각 단어의 첫글자가 대문자인 띄어쓰기인 구분자로 바꿉니다.

use Illuminate\Support\Str;

$headline = Str::headline('steve_jobs');

// Steve Jobs

$headline = Str::headline('EmailNotificationSent');

// Email Notification Sent

Str::inlineMarkdown() {.collection-method}

Str::inlineMarkdown 메서드는 CommonMark를 사용하여 GitHub 풍미 Markdown을 인라인 HTML로 변환 합니다. 그러나 markdown 메서드와 달리 생성된 모든 HTML을 블록 수준 요소로 래핑하지 않습니다.

use Illuminate\Support\Str;

$html = Str::inlineMarkdown('**Laravel**');

// <strong>Laravel</strong>

Str::is() {.collection-method}

Str::is 메소드는 주어진 문자열이 주어진 패턴과 일치하는지를 확인합니다. 별표를 와일드카드로써 사용할 수 있습니다.

use Illuminate\Support\Str;

$matches = Str::is('foo*', 'foobar');

// true

$matches = Str::is('baz*', 'foobar');

// false

Str::isAscii() {.collection-method}

Str::isAscii 메소드는 주어진 문자열이 7 비트 ASCII인지 확인합니다.

use Illuminate\Support\Str;

$isAscii = Str::isAscii('Taylor');

// true

$isAscii = Str::isAscii('ü');

// false

Str::isJson() {.collection-method}

Str::isJson 메서드는 주어진 문자열이 유효한 JSON 인지 판단합니다.

use Illuminate\Support\Str;

$result = Str::isJson('[1,2,3]');

// true

$result = Str::isJson('{"first": "John", "last": "Doe"}');

// true

$result = Str::isJson('{first: "John", last: "Doe"}');

// false

Str::isUlid() {.collection-method}

Str::isUlid 메서드는 주어진 문자열이 유효한 ULID인지 판단합니다.

use Illuminate\Support\Str;

$isUlid = Str::isUlid('01gd6r360bp37zj17nxb55yv40');

// true

$isUlid = Str::isUlid('laravel');

// false

Str::isUuid() {.collection-method}

Str::isUuid 메소드는 주어진 문자열이 유효한 UUID인지 확인합니다.

use Illuminate\Support\Str;

$isUuid = Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de');

// true

$isUuid = Str::isUuid('laravel');

// false

Str::kebab() {.collection-method}

Str::kebab 메소드는 주어진 문자열을 kebab-case로 변환합니다. (역자주 : 단어와 단어를 '-'로 연결한 형태)

use Illuminate\Support\Str;

$converted = Str::kebab('fooBar');

// foo-bar

Str::lcfirst() {.collection-method}

Str::lcfirst 메소드는 주어진 문자열을 첫 번째 문자가 소문자로된 형태로 반환합니다.

use Illuminate\Support\Str;

$string = Str::lcfirst('Foo Bar');

// foo Bar

Str::length() {.collection-method}

Str::length 메소드는 주어진 문자열을 지정된 길이를 반환합니다.

use Illuminate\Support\Str;

$length = Str::length('Laravel');

// 7

Str::limit() {.collection-method}

Str::limit 메소드는 주어진 문자열을 지정된 길이로 제한합니다.

use Illuminate\Support\Str;

$truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20);

// The quick brown fox...

끝에 추가 될 문자열을 변경하기 위해 세 번째 인수를 전달할 수도 있습니다.

use Illuminate\Support\Str;

$truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20, ' (...)');

// The quick brown fox (...)

Str::lower() {.collection-method}

Str::lower 메소드는 주어진 문자열을 소문자로 변환합니다.

use Illuminate\Support\Str;

$converted = Str::lower('LARAVEL');

// laravel

Str::markdown() {.collection-method}

Str::markdown 메소드는 CommonMark 를 이용하여 GitHub Flavored Markdown(GFM)을 HTML 문법으로 변환합니다.

use Illuminate\Support\Str;

$html = Str::markdown('# Laravel');

// <h1>Laravel</h1>

$html = Str::markdown('# Taylor <b>Otwell</b>', [
    'html_input' => 'strip',
]);

// <h1>Taylor Otwell</h1>

Str::mask() {.collection-method}

Str::mask 메소드는 문자열의 일부를 반복되는 문자로 마스킹하며, 이메일 주소 또는 휴대폰 번호와 같은 문자열을 난독화 하기 위해 사용 할 수 있습니다.

use Illuminate\Support\Str;

$string = Str::mask('[email protected]', '*', 3);

// tay***************

세번째 인자로 음수를 사용하는 경우, 주어진 문자열의 끝에서부터 마스킹을 할 수 있습니다.

$string = Str::mask('[email protected]', '*', -15, 3);

// tay***@example.com

Str::orderedUuid() {.collection-method}

Str::orderedUuid 메소드는 인덱싱된 데이터베이스 컬럼에 효과적으로 저장될 수 있도록 "타임스탬프와 같은 정렬이 가능한" UUID를 생성합니다.

(역자주 : 이 헬퍼 메소드의 결과로 생성되는 UUID의 첫 번째 부분은 시간에 따라서 증감하는 형태를 보입니다.)

use Illuminate\Support\Str;

return (string) Str::orderedUuid();

Str::padBoth() {.collection-method}

Str::padBoth 메소드는 PHP의 str_pad 함수를 래핑하여 문자열의 양쪽을 다른 문자로 채웁니다.

use Illuminate\Support\Str;

$padded = Str::padBoth('James', 10, '_');

// '__James___'

$padded = Str::padBoth('James', 10);

// '  James   '

Str::padLeft() {.collection-method}

String::padLeft 메서드는 PHP str_pad 함수를 래핑하여 문자열의 왼쪽을 다른 문자로 채웁니다.

use Illuminate\Support\Str;

$padded = Str::padLeft('James', 10, '-=');

// '-=-=-James'

$padded = Str::padLeft('James', 10);

// '     James'

Str::padRight() {.collection-method}

String::padRight 메소드는 PHP str_pad 함수를 래핑하여 문자열의 오른쪽을 다른 문자로 채웁니다.

use Illuminate\Support\Str;

$padded = Str::padRight('James', 10, '-');

// 'James-----'

$padded = Str::padRight('James', 10);

// 'James     '

Str::plural() {.collection-method}

Str::plural 메소드는 단수형을 복수형으로 변환합니다. 이 기능은 라라벨 pluralizer에서 지원하는 모든 언어를 지원합니다.

use Illuminate\Support\Str;

$plural = Str::plural('car');

// cars

$plural = Str::plural('child');

// children

문자열의 단수 또는 복수 형식을 검색하기 위해 함수에 두 번째 인수로 정수를 제공할 수 있습니다.

use Illuminate\Support\Str;

$plural = Str::plural('child', 2);

// children

$plural = Str::plural('child', 1);

// child

Str::pluralStudly() {.collection-method}

Str::pluralStudly 메서드는 스터드 대문자로 형식이 지정된 단수 단어 문자열을 복수 형태로 변환합니다. 이 함수는 라라벨 pluralizer가 지원하는 모든 언어를 지원합니다 .

use Illuminate\Support\Str;

$plural = Str::pluralStudly('VerifiedHuman');

// VerifiedHumans

$plural = Str::pluralStudly('UserFeedback');

// UserFeedback

문자열의 단수 또는 복수 형식을 검색하기 위해 함수에 두 번째 인수로 정수를 제공할 수 있습니다.

use Illuminate\Support\Str;

$plural = Str::pluralStudly('VerifiedHuman', 2);

// VerifiedHumans

$singular = Str::pluralStudly('VerifiedHuman', 1);

// VerifiedHuman

Str::random() {.collection-method}

Str::random 메소드는 지정된 길이의 문자열을 무작위로 생성합니다. 이 함수는 PHP의 random_bytes 함수를 사용합니다.

use Illuminate\Support\Str;

$random = Str::random(40);

Str::remove() {.collection-method}

Str::remove 메소드는 전달된 문자열 또는 문자열 배열에 포함된 문자열을 주어진 문자열에서 제거합니다.

use Illuminate\Support\Str;

$string = 'Peter Piper picked a peck of pickled peppers.';

$removed = Str::remove('e', $string);

// Ptr Pipr pickd a pck of pickld ppprs.

세번째 인자로 false 값을 전달하는 경우 문자열 제거 시 대/소분자를 구분하지 않도록 할 수 있습니다.

Str::replace() {.collection-method}

Str::replace 메소드는 문자열 내에서 특정 문자열을 다른 문자열로 대체합니다.

use Illuminate\Support\Str;

$string = 'Laravel 8.x';

$replaced = Str::replace('8.x', '9.x', $string);

// Laravel 9.x

Str::replaceArray() {.collection-method}

Str::replaceArray 메소드는 배열을 사용하여 문자열에서 주어진 값을 차례대로 바꿉니다.

use Illuminate\Support\Str;

$string = 'The event will take place between ? and ?';

$replaced = Str::replaceArray('?', ['8:30', '9:00'], $string);

// The event will take place between 8:30 and 9:00

Str::replaceFirst() {.collection-method}

Str::replaceFirst 메소드는 문자열에서 주어진 값이 발견된 첫 번째 부분을 대체합니다.

use Illuminate\Support\Str;

$replaced = Str::replaceFirst('the', 'a', 'the quick brown fox jumps over the lazy dog');

// a quick brown fox jumps over the lazy dog

Str::replaceLast() {.collection-method}

Str::replaceLast 메소드는 문자열에서 주어진 값이 발견된 마지막 부분을 대체합니다.

use Illuminate\Support\Str;

$replaced = Str::replaceLast('the', 'a', 'the quick brown fox jumps over the lazy dog');

// the quick brown fox jumps over a lazy dog

Str::reverse() {.collection-method}

Str::reverse 메소드는 주어진 문자열을 반전합니다.

use Illuminate\Support\Str;

$reversed = Str::reverse('Hello World');

// dlroW olleH

Str::singular() {.collection-method}

Str::singular 메소드는 문자열을 단수 형식으로 변환합니다. 이 기능은 라라벨 pluralizer에서 지원하는 모든 언어를 지원합니다.

use Illuminate\Support\Str;

$singular = Str::singular('cars');

// car

$singular = Str::singular('children');

// child

Str::slug() {.collection-method}

Str::slug 메소드는 주어진 문자열로부터 URL에 알맞은 "slug"를 생성합니다.

use Illuminate\Support\Str;

$slug = Str::slug('Laravel 5 Framework', '-');

// laravel-5-framework

Str::snake() {.collection-method}

Str::snake 메소드는 주어진 문자열을 snake_case 형태로 변환합니다.

use Illuminate\Support\Str;

$converted = Str::snake('fooBar');

// foo_bar

$converted = Str::snake('fooBar', '-');

// foo-bar

Str::squish() {.collection-method}

단어 사이의 불필요한 공백을 포함하여 문자열에서 모든 불필요한 공백을 제거합니다.

use Illuminate\Support\Str;

$string = Str::squish('    laravel    framework    ');

// laravel framework

Str::start() {.collection-method}

Str::start 메소드는 문자열이 주어진 값으로 시작하지 않으면 이를 문자열에 추가합니다.

use Illuminate\Support\Str;

$adjusted = Str::start('this/string', '/');

// /this/string

$adjusted = Str::start('/this/string', '/');

// /this/string

Str::startsWith() {.collection-method}

Str::startsWith 메소드는 문자열이 주어진 값으로 시작하는지를 확인합니다.

use Illuminate\Support\Str;

$result = Str::startsWith('This is my name', 'This');

// true

만약 배열을 전달하는 경우, startsWith 메소드는 문자열이 배열 내의 값 중 하나로 시작하면 true 값을 반환합니다.

$result = Str::startsWith('This is my name', ['This', 'That', 'There']);

// true

Str::studly() {.collection-method}

Str::studly 메소드는 주어진 문자열을 StudlyCase로 변환합니다.

use Illuminate\Support\Str;

$converted = Str::studly('foo_bar');

// FooBar

Str::substr() {.collection-method}

Str::substr 메소드는 start 및 length 매개 변수로 지정된 문자열 부분을 리턴합니다.

use Illuminate\Support\Str;

$converted = Str::substr('The Laravel Framework', 4, 7);

// Laravel

Str::substrCount() {.collection-method}

Str::substrCount 메소드는 주어진 값이 문자열 내에서 반복된 횟수를 반환합니다.

use Illuminate\Support\Str;

$count = Str::substrCount('If you like ice cream, you will like snow cones.', 'like');

// 2

Str::substrReplace() {.collection-method}

Str::substrReplace 메소드는 문자열의 일부 텍스트를 바꿉니다. 세 번째 인자로 지정된 위치에서 시작하여 네 번째 인자로 지정된 위치의 문자를 바꿉니다. 메소드의 네 번째 인자에 '0'을 전달하면 문자열의 기존 문자를 바꾸지 않고 지정된 위치에 문자열을 삽입합니다.

use Illuminate\Support\Str;

$result = Str::substrReplace('1300', ':', 2); 
// 13:

$result = Str::substrReplace('1300', ':', 2, 0); 
// 13:00

Str::swap() {.collection-method}

Str::swap 메소드는 PHP의 strtr 함수를 사용하여 주어진 문자열을 교체합니다.

use Illuminate\Support\Str;

$string = Str::swap([
    'Tacos' => 'Burritos',
    'great' => 'fantastic',
], 'Tacos are great!');

// Burritos are fantastic!

Str::title() {.collection-method}

Str::title 메소드는 주어진 문자열을 Title Case로 변환합니다.

use Illuminate\Support\Str;

$converted = Str::title('a nice title uses the correct case');

// A Nice Title Uses The Correct Case

Str::toHtmlString() {.collection-method}

Str::toHtmlString 메소드는 string 인스턴스를 블레이드 템플릿에서 표현될 수 있는 Illuminate\Support\HtmlString 인스턴스로 변환합니다.

use Illuminate\Support\Str;

$htmlString = Str::of('Nuno Maduro')->toHtmlString();

Str::ucfirst() {.collection-method}

Str::ucfirst 메소드는 첫 문자를 대문자로하여 주어진 문자열을 반환합니다.

use Illuminate\Support\Str;

$string = Str::ucfirst('foo bar');

// Foo bar

Str::ucsplit() {.collection-method}

지정된 문자열을 대문자로 배열로 분할합니다.

use Illuminate\Support\Str;

$segments = Str::ucsplit('FooBar');

// [0 => 'Foo', 1 => 'Bar']

Str::upper() {.collection-method}

Str::upper 메소드는 주어진 문자열을 대문자로 변환합니다.

use Illuminate\Support\Str;

$string = Str::upper('laravel');

// LARAVEL

Str::ulid() {.collection-method}

ULID를 생성합니다.

use Illuminate\Support\Str;

return (string) Str::ulid();

// 01gd6r360bp37zj17nxb55yv40

Str::uuid() {.collection-method}

Str::uuid 메소드는 UUID (version 4)를 생성합니다.

use Illuminate\Support\Str;

return (string) Str::uuid();

Str::wordCount() {.collection-method}

Str::wordCount는 문자열에 포함된 단어의 수를 반환합니다.

use Illuminate\Support\Str;

Str::wordCount('Hello, world!'); // 2

Str::words() {.collection-method}

Str::words 메소드는 문자열의 단어 수를 제한합니다. 세 번째 인자를 통해 제한된 문자열의 끝에 추가되어야 하는 문자열을 전달할 수 있습니다.

use Illuminate\Support\Str;

return Str::words('Perfectly balanced, as all things should be.', 3, ' >>>');

// Perfectly balanced, as >>>

str() {.collection-method}

str 함수는 주어진 문자열을 Illuminate\Support\Stringable 인스턴스로 만들어서 반환합니다. 이 함수는 Str::of 메소드와 동일한 기능을 수행합니다.

$string = str('Taylor')->append(' Otwell');

// 'Taylor Otwell'

str 함수에 아무런 인자가 제공되지 않으면 Illuminate\Support\Str 인스턴스가 반환됩니다.

$snake = str()->snake('FooBar');

// 'foo_bar'

trans() {.collection-method}

trans 함수는 다국어 파일을 이용하여 주어진 다국어 키를 변환합니다.

echo trans('messages.welcome');

지정된 다국어 키가 존재하지 않는다면, trans 함수는 주어진 키를 반환합니다. 따라서 예제에서 다국어 키가 존재하지 않는다면 trans 함수는 messages.welcome을 그대로 반환합니다.

trans_choice() {.collection-method}

trans_choice 함수는 주어진, 수량(단수, 복수 처리)을 이용하여 주어진 다국어 키를 번역합니다.

echo trans_choice('messages.notifications', $unreadCount);

지정된 다국어 키가 존재하지 않는다면, trans_choice 함수는 주어진 키를 반환합니다. 따라서 예제에서 다국어 키가 존재하지 않는다면 trans_choice 함수는 messages.notifications를 그대로 반환합니다.

Fluent Strings

Fluent Strings는 문자열 값을 사용할 때보다 유창하고 객체 지향적인 인터페이스를 제공하므로, 기존 문자열의 작동보다 더 읽기 쉬운 구문을 사용하여 여러 문자열 연산을 함께 연결할 수 있습니다.

after {.collection-method}

after 메소드는 주어진 값 이후의 모든 것을 반환합니다. 문자열 내에 값이 없으면 전체 문자열이 반환됩니다.

use Illuminate\Support\Str;

$slice = Str::of('This is my name')->after('This is');

// ' my name'

afterLast {.collection-method}

afterLast 메소드는 문자열에서 주어진 값이 마지막으로 나타난 후 모든 것을 반환합니다. 문자열 내에 값이 없으면 전체 문자열이 반환됩니다.

use Illuminate\Support\Str;

$slice = Str::of('App\Http\Controllers\Controller')->afterLast('\\');

// 'Controller'

append {.collection-method}

append 메소드는 주어진 값을 문자열에 추가합니다.

use Illuminate\Support\Str;

$string = Str::of('Taylor')->append(' Otwell');

// 'Taylor Otwell'

ascii {.collection-method}

ascii 메소드는 문자열을 ASCII 값으로 변환합니다.

use Illuminate\Support\Str;

$string = Str::of('ü')->ascii();

// 'u'

basename {.collection-method}

basename 메소드는 주어진 문자열의 마지막 구성 요소를 반환합니다.

use Illuminate\Support\Str;

$string = Str::of('/foo/bar/baz')->basename();

// 'baz'

필요한 경우 마지막 구성 요소에서 제거할 "확장자"를 제공할 수 있습니다.

use Illuminate\Support\Str;

$string = Str::of('/foo/bar/baz.jpg')->basename('.jpg');

// 'baz'

before {.collection-method}

before 메소드는 문자열에서 주어진 값 이전의 모든 것을 반환합니다.

use Illuminate\Support\Str;

$slice = Str::of('This is my name')->before('my name');

// 'This is '

beforeLast {.collection-method}

beforeLast 메소드는 문자열에서 주어진 값 이전의 모든 것을 반환합니다.

use Illuminate\Support\Str;

$slice = Str::of('This is my name')->beforeLast('is');

// 'This '

between {.collection-method}

between 메소드는 주어진 두 문자열 사이에 포함된 문자열 부분을 반환합니다.

use Illuminate\Support\Str;

$converted = Str::of('This is my name')->between('This', 'name');

// ' is my '

betweenFirst {.collection-method}

betweenFirst 메소드는 두 값 사이의 문자열에서 가능한 작은 부분을 반환합니다.

use Illuminate\Support\Str;

$converted = Str::of('[a] bc [d]')->betweenFirst('[', ']');

// 'a'

camel {.collection-method}

camel 메소드는 주어진 문자열을 camelCase로 변환합니다.

use Illuminate\Support\Str;

$converted = Str::of('foo_bar')->camel();

// fooBar

classBasename {.collection-method}

클래스의 네임스페이스가 제거된 지정된 클래스의 클래스 이름을 반환합니다.

use Illuminate\Support\Str;

$class = Str::of('Foo\Bar\Baz')->classBasename();

// Baz

contains {.collection-method}

contains 메소드는 주어진 문자열이 주어진 값을 포함하는지 확인합니다. (대소문자를 구분합니다.)

use Illuminate\Support\Str;

$contains = Str::of('This is my name')->contains('my');

// true

또한, 주어진 문자열에 값이 포함되어 있는지 확인하기 위해 배열을 전달할 수도 있습니다.

use Illuminate\Support\Str;

$contains = Str::of('This is my name')->contains(['my', 'foo']);

// true

containsAll {.collection-method}

containsAll 메소드는 주어진 문자열에 모든 배열 값이 포함되어 있는지 확인합니다.

use Illuminate\Support\Str;

$containsAll = Str::of('This is my name')->containsAll(['my', 'name']);

// true

dirname {.collection-method}

dirname 메소드는 주어진 문자열의 부모 디렉토리를 반환합니다.

use Illuminate\Support\Str;

$string = Str::of('/foo/bar/baz')->dirname();

// '/foo/bar'

필요한 경우, 문자열에서 자르려는 디렉토리 레벨 수를 지정할 수 있습니다.

use Illuminate\Support\Str;

$string = Str::of('/foo/bar/baz')->dirname(2);

// '/foo'

excerpt {.collection-method}

excerpt 메소드는 해당 문자열 안에서 첫 번째 구문과 일치하는 문자열을 발췌한 결과를 반환합니다.

use Illuminate\Support\Str;

$excerpt = Str::of('This is my name')->excerpt('my', [
    'radius' => 3
]);

// '...is my na...'

radius 옵션값은 기본적으로 100 으로 지정되어 있습니다. 이 값을 사용하면 잘린 문자열의 앞뒤에 표시되어야 하는 문자열의 수를 지정할 수 있습니다.

추가적으로 omission 옵션을 사용하여 잘린 문자열 앞뒤로 추가될 문자열의 형식을 변경할 수도 있습니다.

use Illuminate\Support\Str;

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

// '(...) my name'

endsWith {.collection-method}

endsWith 메소드는 주어진 문자열이 주어진 값으로 끝나는지 확인합니다.

use Illuminate\Support\Str;

$result = Str::of('This is my name')->endsWith('name');

// true

주어진 문자열이 주어진 값으로 끝나는지 확인하기 위해 배열을 전달할 수도 있습니다.

use Illuminate\Support\Str;

$result = Str::of('This is my name')->endsWith(['name', 'foo']);

// true

$result = Str::of('This is my name')->endsWith(['this', 'foo']);

// false

exactly {.collection-method}

exactly 메소드는 주어진 문자열이 다른 문자열과 정확히 일치하는지 확인합니다.

use Illuminate\Support\Str;

$result = Str::of('Laravel')->exactly('Laravel');

// true

explode {.collection-method}

explode 메소드는 주어진 구분 기호로 문자열을 분할하고 분할 문자열의 각 섹션을 포함하는 컬렉션을 반환합니다.

use Illuminate\Support\Str;

$collection = Str::of('foo bar baz')->explode(' ');

// collect(['foo', 'bar', 'baz'])

finish {.collection-method}

finish 메소드는 문자열이 주어진 값으로 끝나지 않으면 해당 값을 추가합니다.

use Illuminate\Support\Str;

$adjusted = Str::of('this/string')->finish('/');

// this/string/

$adjusted = Str::of('this/string/')->finish('/');

// this/string/

headline {.collection-method}

headline 메서드는 대소문자, 하이픈, 밑줄로 구분된 문자열을 공백으로 구분되고 각 단어의 첫자는 대문자인 문자열로 바꿔줍니다.

use Illuminate\Support\Str;

$headline = Str::of('taylor_otwell')->headline();

// Taylor Otwell

$headline = Str::of('EmailNotificationSent')->headline();

// Email Notification Sent

inlineMarkdown {.collection-method}

CommonMark를 사용하여 GitHub 풍미 Markdown을 인라인 HTML로 변환 합니다. 그러나 markdown 메서드와 달리 생성된 모든 HTML을 블록 수준 요소로 래핑하지 않습니다.

use Illuminate\Support\Str;

$html = Str::of('**Laravel**')->inlineMarkdown();

// <strong>Laravel</strong>

is {.collection-method}

is 메소드는 주어진 문자열이 주어진 패턴과 일치하는지를 확인합니다. 와일드카드를 나타내는 데 별표를 사용할 수 있습니다.

use Illuminate\Support\Str;

$matches = Str::of('foobar')->is('foo*');

// true

$matches = Str::of('foobar')->is('baz*');

// false

isAscii {.collection-method}

isAscii 메소드는 주어진 문자열이 ASCII 문자열인지 확인합니다.

use Illuminate\Support\Str;

$result = Str::of('Taylor')->isAscii();

// true

$result = Str::of('ü')->isAscii();

// false

isEmpty {.collection-method}

isEmpty 메소드는 주어진 문자열이 비어 있는지 확인합니다.

use Illuminate\Support\Str;

$result = Str::of('  ')->trim()->isEmpty();

// true

$result = Str::of('Laravel')->trim()->isEmpty();

// false

isNotEmpty {.collection-method}

isNotEmpty 메소드는 주어진 문자열이 비어 있지 않은지 확인합니다.

use Illuminate\Support\Str;

$result = Str::of('  ')->trim()->isNotEmpty();

// false

$result = Str::of('Laravel')->trim()->isNotEmpty();

// true

isJson {.collection-method}

주어진 문자열이 유효한 JSON 인지 확인합니다.

use Illuminate\Support\Str;

$result = Str::of('[1,2,3]')->isJson();

// true

$result = Str::of('{"first": "John", "last": "Doe"}')->isJson();

// true

$result = Str::of('{first: "John", last: "Doe"}')->isJson();

// false

isUlid {.collection-method}

주어진 문자열이 ULID 인지 확인합니다.

use Illuminate\Support\Str;

$result = Str::of('01gd6r360bp37zj17nxb55yv40')->isUlid();

// true

$result = Str::of('Taylor')->isUlid();

// false

isUuid {.collection-method}

isUuid 메소드는 주어진 문자열이 UUID 인지 확인합니다.

use Illuminate\Support\Str;

$result = Str::of('5ace9ab9-e9cf-4ec6-a19d-5881212a452c')->isUuid();

// true

$result = Str::of('Taylor')->isUuid();

// false

kebab {.collection-method}

kebab 메소드는 주어진 문자열을 kebab-case로 변환합니다.

use Illuminate\Support\Str;

$converted = Str::of('fooBar')->kebab();

// foo-bar

lcfirst() {.collection-method}

lcfirst 메소드는 주어진 문자열을 첫 번째 문자가 소문자로 된 형식으로 반환합니다.

use Illuminate\Support\Str;

$string = Str::of('Foo Bar')->lcfirst();

// foo Bar

length {.collection-method}

length 메소드는 주어진 문자열의 길이를 반환합니다.

use Illuminate\Support\Str;

$length = Str::of('Laravel')->length();

// 7

limit {.collection-method}

limit 메소드는 주어진 문자열을 지정된 길이로 제한합니다.

use Illuminate\Support\Str;

$truncated = Str::of('The quick brown fox jumps over the lazy dog')->limit(20);

// The quick brown fox...

제한된 문자열의 끝에 문자열을 추가하기 위해 두 번째 인자를 전달할 수도 있습니다.

use Illuminate\Support\Str;

$truncated = Str::of('The quick brown fox jumps over the lazy dog')->limit(20, ' (...)');

// The quick brown fox (...)

lower {.collection-method}

lower 메소드는 주어진 문자열을 소문자로 변환합니다.

use Illuminate\Support\Str;

$result = Str::of('LARAVEL')->lower();

// 'laravel'

ltrim {.collection-method}

ltrim 메소드는 주어진 문자열 왼쪽의 공백문자를 제거합니다.

(역자주: 또는 하단과 같이 주어진 문자를 제거 합니다)

use Illuminate\Support\Str;

$string = Str::of('  Laravel  ')->ltrim();

// 'Laravel  '

$string = Str::of('/Laravel/')->ltrim('/');

// 'Laravel/'

markdown {.collection-method}

markdown 메소드는 GitHub Flavored Markdown(GFM)을 HTML 문법으로 변환합니다.

use Illuminate\Support\Str;

$html = Str::of('# Laravel')->markdown();

// <h1>Laravel</h1>

$html = Str::of('# Taylor <b>Otwell</b>')->markdown([
    'html_input' => 'strip',
]);

// <h1>Taylor Otwell</h1>

mask {.collection-method}

mask 메소드는 문자열의 일부를 반복되는 문자로 마스킹하며, 이메일 주소 또는 휴대폰 번호와 같은 문자열을 난독화 하기 위해 사용 할 수 있습니다.

use Illuminate\Support\Str;

$string = Str::of('[email protected]')->mask('*', 3);

// tay***************

mask 메서드의 세 번째 또는 네 번째 인수자를 음수 값으로 전달하여 문자열 끝에서 지정된 거리만큼 떨어진 지점부터 마스킹을 시작할 수 있습니다.

$string = Str::of('[email protected]')->mask('*', -15, 3);

// tay***@example.com

$string = Str::of('[email protected]')->mask('*', 4, -4);

// tayl**********.com

match {.collection-method}

match 메소드는 주어진 정규식 패턴과 일치하는 문자열을 반환합니다.

use Illuminate\Support\Str;

$result = Str::of('foo bar')->match('/bar/');

// 'bar'

$result = Str::of('foo bar')->match('/foo (.*)/');

// 'bar'

matchAll {.collection-method}

matchAll 메소드는 주어진 정규 표현식 패턴과 일치하는 문자열을 포함하는 컬렉션을 반환합니다.

use Illuminate\Support\Str;

$result = Str::of('bar fun bar fly')->matchAll('/f(\w*)/');

// collect(['bar', 'bar'])

식 내에서 일치하는 그룹을 지정하면 Laravel은 해당 그룹의 일치하는 컬렉션을 반환합니다.

use Illuminate\Support\Str;

$result = Str::of('bar fun bar fly')->match('/f(\w*)/');

// collect(['un', 'ly']);

일치하는 항목이 없으면 빈 컬렉션이 반환됩니다.

newLine {.collection-method}

문자열 끝에 "end of line" 문자를 붙입니다.

use Illuminate\Support\Str;

$padded = Str::of('Laravel')->newLine()->append('Framework');

// 'Laravel
//  Framework'

padBoth {.collection-method}

padBoth 메소드는 PHP의 str_pad 함수를 래핑하여 문자열의 양쪽을 다른 문자로 채웁니다

use Illuminate\Support\Str;

$padded = Str::of('James')->padBoth(10, '_');

// '__James___'

$padded = Str::of('James')->padBoth(10);

// '  James   '

padLeft {.collection-method}

padLeft 메소드는 PHP의 str_pad 함수를 래핑한 것으로, 문자열이 원하는 길이가 될 때까지 문자열의 왼쪽을 다른 문자로 채웁니다.

use Illuminate\Support\Str;

$padded = Str::of('James')->padLeft(10, '-=');

// '-=-=-James'

$padded = Str::of('James')->padLeft(10);

// '     James'

padRight {.collection-method}

padRight 메소드는 PHP의 str_pad 함수를 래핑하여 문자열의 오른쪽을 다른 문자로 채웁니다

use Illuminate\Support\Str;

$padded = Str::of('James')->padRight(10, '-');

// 'James-----'

$padded = Str::of('James')->padRight(10);

// 'James     '

pipe {.collection-method}

pipe 메소드는 현재 문자열을 주어진 callable에 전달하여 변환할 수 있습니다.

use Illuminate\Support\Str;

$hash = Str::of('Laravel')->pipe('md5')->prepend('Checksum: ');

// 'Checksum: a5c95b86291ea299fcbe64458ed12702'

$closure = Str::of('foo')->pipe(function ($str) {
    return 'bar';
});

// 'bar'

plural {.collection-method}

plural 메소드는 단수형을 복수형으로 변환합니다. 이 기능은 라라벨 pluralizer에서 지원하는 모든 언어를 지원합니다.

use Illuminate\Support\Str;

$plural = Str::of('car')->plural();

// cars

$plural = Str::of('child')->plural();

// children

문자열의 단수 또는 복수 형식을 검색하기 위해 함수에 두 번째 인수로 정수를 제공할 수 있습니다.

use Illuminate\Support\Str;

$plural = Str::of('child')->plural(2);

// children

$plural = Str::of('child')->plural(1);

// child

prepend {.collection-method}

prepend 메소드는 주어진 값을 문자열 앞에 추가합니다.

use Illuminate\Support\Str;

$string = Str::of('Framework')->prepend('Laravel ');

// Laravel Framework

remove {.collection-method}

Str::remove 메소드는 주어진 문자열 또는 문자열 배열에 포함된 문자를 주어진 문자열에서 제거합니다.

use Illuminate\Support\Str;

$string = Str::of('Arkansas is quite beautiful!')->remove('quite');

// Arkansas is beautiful!

세번째 인자로 false 값을 전달하는 경우 문자열 제거 시 대/소분자를 구분하지 않도록 할 수 있습니다.

replace {.collection-method}

replace 메소드는 문자열 내에서 주어진 문자열을 대체합니다.

use Illuminate\Support\Str;

$replaced = Str::of('Laravel 6.x')->replace('6.x', '7.x');

// Laravel 7.x

replaceArray {.collection-method}

replaceArray 메소드는 배열을 사용하여 문자열에서 주어진 값을 차례대로 바꿉니다.

use Illuminate\Support\Str;

$string = 'The event will take place between ? and ?';

$replaced = Str::of($string)->replaceArray('?', ['8:30', '9:00']);

// The event will take place between 8:30 and 9:00

replaceFirst {.collection-method}

replaceFirst 메소드는 문자열에서 주어진 값이 발견된 첫 번째 부분을 대체합니다.

use Illuminate\Support\Str;

$replaced = Str::of('the quick brown fox jumps over the lazy dog')->replaceFirst('the', 'a');

// a quick brown fox jumps over the lazy dog

replaceLast {.collection-method}

replaceLast 메소드는 문자열에서 주어진 값이 발견된 마지막 부분을 대체합니다.

use Illuminate\Support\Str;

$replaced = Str::of('the quick brown fox jumps over the lazy dog')->replaceLast('the', 'a');

// the quick brown fox jumps over a lazy dog

replaceMatches {.collection-method}

replaceMatches 메소드는 주어진 패턴과 일치하는 문자열의 모든 부분을 주어진 대체 문자열로 변경합니다.

use Illuminate\Support\Str;

$replaced = Str::of('(+1) 501-555-1000')->replaceMatches('/[^A-Za-z0-9]++/', '')

// '15015551000'

replaceMatches 메소드는 또한 주어진 파티에 일치하는 문자열의 각 부분에 대해 호출되는 클로저를 허용하므로 closure 내에서 대체 로직을 실행하고 대체된 값을 반환할 수 있습니다.

use Illuminate\Support\Str;

$replaced = Str::of('123')->replaceMatches('/\d/', function ($match) {
    return '['.$match[0].']';
});

// '[1][2][3]'

rtrim {.collection-method}

rtrim 메소드는 주어진 문자열 오른쪽의 공백문자를 제거합니다.

(역자주: 또는 하단과 같이 주어진 문자를 제거 합니다)

use Illuminate\Support\Str;

$string = Str::of('  Laravel  ')->rtrim();

// '  Laravel'

$string = Str::of('/Laravel/')->rtrim('/');

// '/Laravel'

scan {.collection-method}

scan 메소드는 sscanf PHP 내장함수 에서 지원하는 형식에 따라 문자열 입력을 컬렉션으로 파싱합니다.

use Illuminate\Support\Str;

$collection = Str::of('filename.jpg')->scan('%[^.].%s');

// collect(['filename', 'jpg'])

singular {.collection-method}

singular 메소드는 문자열을 단수 형식으로 변환합니다. 이 기능은 현재 영어만 지원합니다.

use Illuminate\Support\Str;

$singular = Str::of('cars')->singular();

// car

$singular = Str::of('children')->singular();

// child

slug {.collection-method}

slug 메소드는 주어진 문자열로부터 URL에 알맞는 "slug"를 생성합니다.

use Illuminate\Support\Str;

$slug = Str::of('Laravel Framework')->slug('-');

// laravel-framework

snake {.collection-method}

snake 메소드는 주어진 문자열을 snake_case로 변환합니다.

use Illuminate\Support\Str;

$converted = Str::of('fooBar')->snake();

// foo_bar

split {.collection-method}

split 메소드는 정규 표현식을 사용하여 문자열을 컬렉션으로 분할합니다.

use Illuminate\Support\Str;

$segments = Str::of('one, two, three')->split('/[\s,]+/');

// collect(["one", "two", "three"])

squish {.collection-method}

단어 사이의 불필요한 공백을 포함하여 문자열에서 모든 불필요한 공백을 제거합니다.

use Illuminate\Support\Str;

$string = Str::of('    laravel    framework    ')->squish();

// laravel framework

start {.collection-method}

start 메소드는 문자열이 주어진 값으로 시작하지 않으면 이를 문자열에 추가합니다.

use Illuminate\Support\Str;

$adjusted = Str::of('this/string')->start('/');

// /this/string

$adjusted = Str::of('/this/string')->start('/');

// /this/string

startsWith {.collection-method}

startsWith 메소드는 주어진 문자열이 주어진 값으로 시작하는지를 확인합니다.

use Illuminate\Support\Str;

$result = Str::of('This is my name')->startsWith('This');

// true

studly {.collection-method}

studly 메소드는 주어진 문자열을 StudlyCase로 변환합니다.

use Illuminate\Support\Str;

$converted = Str::of('foo_bar')->studly();

// FooBar

substr {.collection-method}

substr 메소드는 주어진 시작 및 길이 파라미터에 의해 지정된 문자열 부분을 반환합니다.

use Illuminate\Support\Str;

$string = Str::of('Laravel Framework')->substr(8);

// Framework

$string = Str::of('Laravel Framework')->substr(8, 5);

// Frame

substrReplace {.collection-method}

substrReplace 메소드는 문자열의 일부 텍스트를 바꿉니다. 두 번째 인자로 지정된 위치에서 시작하여 세 번째 인자로 지정된 위치의 문자를 바꿉니다. 메소드의 세 번째 인자에 '0'을 전달하면 문자열의 기존 문자를 바꾸지 않고 지정된 위치에 문자열을 삽입합니다.

use Illuminate\Support\Str;

$string = Str::of('1300')->substrReplace(':', 2);

// 13:

$string = Str::of('The Framework')->substrReplace(' Laravel', 3, 0);

// The Laravel Framework

swap {.collection-method}

swap 메소드는 PHP의 strtr 함수를 사용하여 문자열의 값을 서로 교환합니다.

use Illuminate\Support\Str;

$string = Str::of('Tacos are great!')
    ->swap([
        'Tacos' => 'Burritos',
        'great' => 'fantastic',
    ]);

// Burritos are fantastic!

tap {.collection-method}

tap 메소드는 문자열을 주어진 클로저에 전달하여 문자열 자체에 영향을 주지 않으면서 문자열을 검사하고 상호 작용할 수 있도록 합니다. 원래 문자열은 클로저에 의해 반환된 내용에 관계없이 tap 메소드에 의해 반환됩니다.

use Illuminate\Support\Str;

$string = Str::of('Laravel')
    ->append(' Framework')
    ->tap(function ($string) {
        dump('String after append: ' . $string);
    })
    ->upper();

// LARAVEL FRAMEWORK

test {.collection-method}

test 메소드는 문자열이 주어진 정규 표현식 패턴과 일치하는지 확인합니다.

use Illuminate\Support\Str;

$result = Str::of('Laravel Framework')->test('/Laravel/');

// true

title {.collection-method}

title 메소드는 주어진 문자열을 Title Case로 변환합니다.

use Illuminate\Support\Str;

$converted = Str::of('a nice title uses the correct case')->title();

// A Nice Title Uses The Correct Case

trim {.collection-method}

trim 메소드는 주어진 문자열을 잘라냅니다.

use Illuminate\Support\Str;

$string = Str::of('  Laravel  ')->trim();

// 'Laravel'

$string = Str::of('/Laravel/')->trim('/');

// 'Laravel'

ucfirst {.collection-method}

ucfirst 메소드는 첫 문자를 대문자로 하여 주어진 문자열을 반환합니다.

use Illuminate\Support\Str;

$string = Str::of('foo bar')->ucfirst();

// Foo bar

ucsplit {.collection-method}

지정된 문자열을 대문자로 컬렉션으로 분할합니다.

use Illuminate\Support\Str;

$string = Str::of('Foo Bar')->ucsplit();

// collect(['Foo', 'Bar'])

upper {.collection-method}

upper 메소드는 주어진 문자열을 대문자로 변환합니다.

use Illuminate\Support\Str;

$adjusted = Str::of('laravel')->upper();

// LARAVEL

when {.collection-method}

when 메소드는 주어진 조건이 참이면 주어진 Closure를 호출합니다. Closure는 fluent string 인스턴스를 받습니다.

use Illuminate\Support\Str;

$string = Str::of('Taylor')
                ->when(true, function ($string) {
                    return $string->append(' Otwell');
                });

// 'Taylor Otwell'

필요한 경우 when 메소드의 세 번째 매개 변수로 다른 Closure를 전달할 수 있습니다. 조건 매개 변수가 false로 판별되면 이 Closure가 실행됩니다.

whenContains {.collection-method}

whenContains 메소드는 문자열이 주어진 값을 포함하는 경우 주어진 클로저를 호출합니다. 클로저는 fluent string 인스턴스를 받습니다.

use Illuminate\Support\Str;

$string = Str::of('tony stark')
            ->whenContains('tony', function ($string) {
                return $string->title();
            });

// 'Tony Stark'

필요한 경우 when 메소드의 세 번째 매개변수로 다른 클로저를 전달할 수 있습니다. 이 클로저는 문자열에 주어진 값이 포함되어 있지 않으면 실행됩니다.

주어진 문자열에 배열의 값이 포함되어 있는지 확인하기 위해 값 배열을 전달할 수도 있습니다.

use Illuminate\Support\Str;

$string = Str::of('tony stark')
            ->whenContains(['tony', 'hulk'], function ($string) {
                return $string->title();
            });

// Tony Stark

whenContainsAll {.collection-method}

whenContainsAll 메소드는 문자열에 주어진 하위 문자열이 모두 포함되어 있으면 전달된 클로저를 호출합니다. 클로저는 fluent string 인스턴스를 전달 받습니다.

use Illuminate\Support\Str;

$string = Str::of('tony stark')
                ->whenContainsAll(['tony', 'stark'], function ($string) {
                    return $string->title();
                });

// 'Tony Stark'

필요한 경우 when 메소드의 세 번째 매개변수로 다른 클로저를 전달할 수 있습니다. 이 클로저는 조건이 false로 반환되면 실행됩니다.

whenEmpty {.collection-method}

whenEmpty 메소드는 문자열이 비어 있으면 주어진 클로저를 호출합니다. 클로저가 값을 반환하면 그 값도 whenEmpty 메소드에 의해 반환됩니다. 클로저가 값을 반환하지 않으면 fluent string 인스턴스가 반환됩니다.

use Illuminate\Support\Str;

$string = Str::of('  ')->whenEmpty(function ($string) {
    return $string->trim()->prepend('Laravel');
});

// 'Laravel'

whenNotEmpty {.collection-method}

whenNotEmpty 메소드는 문자열이 비어 있지 않으면 주어진 클로저를 호출합니다. closure 가 값을 반환하면 해당 값은 whenNotEmpty 메소드에서도 반환됩니다. 클로저가 값을 반환하지 않으면 fluent string 인스턴스가 반환됩니다.

use Illuminate\Support\Str;

$string = Str::of('Framework')->whenNotEmpty(function ($string) {
    return $string->prepend('Laravel ');
});

// 'Laravel Framework'

whenStartsWith {.collection-method}

whenStartsWith 메소드는 문자열이 주어진 하위 문자열로 시작하면 주어진 클로저를 호출합니다. 클로저는 fluent string 인스턴스를 전달 받습니다.

use Illuminate\Support\Str;

$string = Str::of('disney world')->whenStartsWith('disney', function ($string) {
    return $string->title();
});

// 'Disney World'

whenEndsWith {.collection-method}

whenEndsWith 메소드는 문자열이 주어진 하위 문자열로 끝나는 경우 주어진 클로저를 호출합니다. 클로저는 fluent string 인스턴스를 전달 받습니다.

use Illuminate\Support\Str;

$string = Str::of('disney world')->whenEndsWith('world', function ($string) {
    return $string->title();
});

// 'Disney World'

whenExactly {.collection-method}

whenExactly 메소드는 문자열이 주어진 문자열과 정확히 일치하면 주어진 클로저를 호출합니다. 클로저는 fluent string 인스턴스를 전달 받습니다.

use Illuminate\Support\Str;

$string = Str::of('laravel')->whenExactly('laravel', function ($string) {
    return $string->title();
});

// 'Laravel'

whenNotExactly {.collection-method}

어진 문자열과 정확히 일치하지 않으면 메서드는 주어진 클로저를 호출합니다. 클로저는 유창한 문자열 인스턴스를 수신합니다:

use Illuminate\Support\Str;

$string = Str::of('framework')->whenNotExactly('laravel', function ($string) {
    return $string->title();
});

// 'Framework'

whenIs {.collection-method}

whenIs 메소드는 문자열이 주어진 패턴과 일치하면 주어진 클로저를 호출합니다. 별표를 와일드카드 값으로 사용할 수 있습니다. 클로저는 fluent string 인스턴스를 전달 받습니다.

use Illuminate\Support\Str;

$string = Str::of('foo/bar')->whenIs('foo/*', function ($string) {
    return $string->append('/baz');
});

// 'foo/bar/baz'

whenIsAscii {.collection-method}

whenIsAscii 메소드는 문자열이 7비트 ASCII인 경우 주어진 클로저를 호출합니다. 클로저는 fluent string 인스턴스를 전달 받습니다.

use Illuminate\Support\Str;

$string = Str::of('laravel')->whenIsAscii(function ($string) {
    return $string->title();
});

// 'Laravel'

whenIsUlid {.collection-method}

whenIsUlid 메소드는 문자열이 유효한 ULID인 경우 주어진 클로저를 호출합니다. 클로저는 fluent string 인스턴스를 전달 받습니다.

use Illuminate\Support\Str;

$string = Str::of('01gd6r360bp37zj17nxb55yv40')->whenIsUlid(function ($string) {
    return $string->substr(0, 8);
});

// '01gd6r36'

whenIsUuid {.collection-method}

whenIsUuid 메소드는 문자열이 유효한 UUID인 경우 주어진 클로저를 호출합니다. 클로저는 fluent string 인스턴스를 받습니다.

use Illuminate\Support\Str;

$string = Str::of('a0a2a2d2-0b87-4a18-83f2-2529882be2de')->whenIsUuid(function ($string) {
    return $string->substr(0, 8);
});

// 'a0a2a2d2'

whenTest {.collection-method}

whenTest 메소드는 문자열이 주어진 정규 표현식과 일치하는 경우 클로저를 호출합니다. 클로저는 fluent string 인스턴스를 받습니다.

use Illuminate\Support\Str;

$string = Str::of('laravel framework')->whenTest('/laravel/', function ($string) {
    return $string->title();
});

// 'Laravel Framework'

wordCount {.collection-method}

wordCount 메소드는 문자열 내의 단어의 수를 반환합니다.

use Illuminate\Support\Str;

Str::of('Hello, world!')->wordCount(); // 2

words {.collection-method}

words 메소드는 문자열의 단어 수를 제한합니다.

use Illuminate\Support\Str;

$string = Str::of('Perfectly balanced, as all things should be.')->words(3, ' >>>');

// Perfectly balanced, as >>>

URLs

action() {.collection-method}

action 함수는 주어진 컨트롤러 메소드로 URL을 생성합니다.

$url = action([HomeController::class, 'index']);

메소드가 라우트 파라미터를 받아들인다면, 두 번째 인자로 메소드에 전달하십시오.

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

asset() {.collection-method}

asset 함수는 HTTP요청의 현재 scheme(HTTP나 HTTPS)을 이용하여 asset을 사용하기 위한 URL을 생성합니다.

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

.env 파일에 ASSET_URL 변수를 설정하여 asset의 URL 호스트를 설정할 수 있습니다. 이는 Amazon S3와 같은 외부 서비스에서 asset을 호스팅하는 경우 유용 할 수 있습니다.

// ASSET_URL=http://example.com/assets

$url = asset('img/photo.jpg'); // http://example.com/assets/img/photo.jpg

route() {.collection-method}

route 함수는 주어진 라우트 이름으로 URL을 생성합니다.

$url = route('routeName');

라우트가 파라미터를 가진다면 파라미터를 두 번째 인자로 메소드에 전달하세요.

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

기본적으로 route 함수는 절대 경로 URL을 생성합니다. 만약 상태경로의 URL을 생성하려면 세번째 인자를 false로 전달하면 됩니다.

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

secure_asset() {.collection-method}

secure_asset 함수는 HTTPS를 이용하여 asset을 사용하기 위한 URL을 생성합니다.

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

secure_url() {.collection-method}

secure_url 함수는 주어진 경로에 대한 전체 HTTPS URL을 생성합니다.

$url = secure_url('user/profile');

$url = secure_url('user/profile', [1]);

to_route() {.collection-method}

to_route 함수는 주어진 이름에 해당하는 라우트로 이동하는 HTTP 리다이렉트 응답 을 생성합니다.

return to_route('users.show', ['user' => 1]);

필요한경우, 리다이렉션 응답에 포함될 HTTP 상태코드를 세번째 인자로, 응답 해더에 포함될 값을 네번째 인자로 전달할 수도 있습니다.

return to_route('users.show', ['user' => 1], 302, ['X-Framework' => 'Laravel']);

url() {.collection-method}

url 함수는 주어진 경로에 대한 전체 URL을 생성합니다.

$url = url('user/profile');

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

경로를 전달하지 않으면, Illuminate\Routing\UrlGenerator 인스턴스가 반환됩니다.

$current = url()->current();

$full = url()->full();

$previous = url()->previous();

기타 함수들

abort() {.collection-method}

abort 함수는 Exception 핸들러에 의해서 렌더링 될 수 있는 HTTP exception을 발생시킵니다.

abort(403);

브라우저에 보내야 하는 exception 의 메세지를 제공하거나, 커스텀 헤더를 지정할 수도 있습니다.

abort(403, 'Unauthorized.', $headers);

abort_if() {.collection-method}

abort_if 함수는 주어진 조건식이 true 일때 HTTP exception을 발생시킵니다.

abort_if(! Auth::user()->isAdmin(), 403);

abort 메소드와 같이, exception 의 응답 텍스트를 세번째 인자로 전달할 수 있으며, 네번째 인자로 커스텀 응답 헤더를 전달할 수도 있습니다.

abort_unless() {.collection-method}

abort_unless 함수는 주어진 조건식이 false 일때 HTTP exception 을 발생시킵니다.

abort_unless(Auth::user()->isAdmin(), 403);

abort 메소드와 같이, exception 의 응답 텍스트를 세번째 인자로 전달할 수 있으며, 네번째 인자로 커스텀 응답 헤더를 전달할 수도 있습니다.

app() {.collection-method}

app 함수는 서비스 컨테이너 인스턴스를 반환합니다.

$container = app();

컨테이너에 의존성을 해결하고자 하는 클래스나 인터페이스의 이름을 전달할 수도 있습니다.

$api = app('HelpSpot\API');

auth() {.collection-method}

auth 함수는 authenticator 인스턴스를 반환합니다. 편의를 위하여 Auth 파사드 대신 이용할 수 있습니다.

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

필요한 경우, 어떤 guard 인스턴스를 사용할지 지정할 수 있습니다.

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

back() {.collection-method}

back() 함수는 사용자의 이전 위치로 리다이렉트 HTTP response-응답을 생성합니다.

return back($status = 302, $headers = [], $fallback = false);

return back();

bcrypt() {.collection-method}

bcrypt 함수는 Bcrypt를 이용하여 주어진 값을 해시 처리합니다. Hash 파사드 대신 사용할 수 있습니다.

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

blank() {.collection-method}

blank 함수는 주어진 값이 "빈값"인지 판단하여 결과를 반환합니다.

blank('');
blank('   ');
blank(null);
blank(collect());

// true

blank(0);
blank(true);
blank(false);

// false

blank의 반대는, filled 메소드를 참고하십시오.

broadcast() {.collection-method}

broadcast 함수는 주어진 이벤트를 리스너들에게 broadcasts 합니다.

broadcast(new UserRegistered($user));

cache() {.collection-method}

cache 함수는 캐시로 부터 값을 가져오는데 사용할 수 있습니다. 캐시에서 주어진 키가 존재하지 않는 경우, 옵션으로 전달된 기본값(두 번째인자)가 반환됩니다

$value = cache('key');

$value = cache('key', 'default');

함수에 키 / 값으로 된 배열을 전달하여 캐시에 아이템을 추가할 수 있습니다. 또한 캐시에 값이 얼마나 유지되어야 하는지에 대한 시간(초)을 숫자로 전달할 수도 있습니다.

cache(['key' => 'value'], 300);

cache(['key' => 'value'], now()->addSeconds(10));

class_uses_recursive() {.collection-method}

class_uses_recursive 함수는 모든 부모 클래스가 사용하는 trait를 포함하여 클래스가 사용하는 모든 trait을 반환합니다.

$traits = class_uses_recursive(App\Models\User::class);

collect() {.collection-method}

collect 함수는 주어진 값으로부터 collection 인스턴스를 생성합니다.

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

config() {.collection-method}

config 함수는 설정 변수의 값을 가져옵니다. 설정 값은 파일명과 접근하고자 하는 옵션을 포함하는 "점(.)" 문법(syntax)를 사용하여 접근할 수 있습니다. 설정 옵션이 존재하지 않는다면 지정된 기본값이 반환됩니다.

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

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

런타임에 설정 값을 키 / 값 형태로 전달하여 값을 설정할 수도 있습니다.

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

cookie() {.collection-method}

cookie 함수는 새로운 쿠키 인스턴스를 생성합니다.

$cookie = cookie('name', 'value', $minutes);

csrf_field() {.collection-method}

csrf_field 함수는 CSRF 토큰 값을 포함하는 HTML hidden Input 필드를 생성합니다. 예를 들어 Blade syntax에서 사용할 수 있습니다.

{{ csrf_field() }}

csrf_token() {.collection-method}

csrf_token 함수는 현재 CSRF 토큰의 값을 조회합니다.

$token = csrf_token();

decrypt() {.collection-method}

decrypt 함수는 주어진 값을 decrypts. Crypt 파사드 대신에 이 함수를 사용할 수 이 있습니다.

$password = decrypt($value);

dd() {.collection-method}

dd 함수는 주어진 변수들을 Dump 처리하고 스크립트의 실행을 중단합니다.

dd($value);

dd($value1, $value2, $value3, ...);

스크립트 실행을 중단하고 싶지 않다면, dump 함수를 사용하십시오:

dispatch() {.collection-method}

dispatch 함수는 라라벨의 job queue에 주어진 job을 추가합니다.

dispatch(new App\Jobs\SendEmails);

dispatch_now() {.collection-method}

dispatch_now 함수는 주어진 job을 즉시 실행하고 handle 메소드의 값을 반환합니다.

$result = dispatch_now(new App\Jobs\SendEmails);

dump() {.collection-method}

dump 함수는 주어진 변수의 값을 덤프하여 표시합니다.

dump($value);

dump($value1, $value2, $value3, ...);

변수읙 값을 표시한 다음에 스크립트의 실행을 멈추고자 한다면, dd함수를 사용하십시오.

encrypt() {.collection-method}

encrypt 함수는 주어진 값을 암호화 합니다. Crypt 파사드 대신에 이 함수를 사용할 수 있습니다.

$secret = encrypt('my-secret-value');

env() {.collection-method}

env 함수는 환경변수의 값을 가져오거나 기본값을 조회합니다.

$env = env('APP_ENV');

// Returns 'production' if APP_ENV is not set...
$env = env('APP_ENV', 'production');

{note} 배포과정에서 config:cache 명령어를 실행했다면, 설정 파일안에서 env 함수를 호출한 부분이 있는지 확인해야 합니다. 설정이 캐싱되고 나면, .env 파일은 로드하지 않고, 모든 env 함수는 null을 반환합니다.

event() {.collection-method}

event 함수는 주어진 event를 리스너들에게 보냅니다.

event(new UserRegistered($user));

factory() {.collection-method}

factory 함수는 주어진 클래스, 이름, 양을 위한 모델 팩토리 빌더를 생성합니다. testing이나 seeding 중에 이용할 수 있습니다.

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

fake() {.collection-method}

모델 팩토리, 데이터베이스 시드, 테스트 및 프로토타이핑 뷰에서 가짜 데이터를 생성할 때 유용할 수 있는 컨테이너에서 Faker 싱글톤을 해결합니다.

@for($i = 0; $i < 10; $i++)
    <dl>
        <dt>Name</dt>
        <dd>{{ fake()->name() }}</dd>

        <dt>Email</dt>
        <dd>{{ fake()->unique()->safeEmail() }}</dd>
    </dl>
@endfor

기본적으로 이 fake 기능은 config/app.php 구성 파일의 app.faker_locale 구성 옵션을 활용합니다. 그러나 fake 함수에 전달하여 로케일을 지정할 수도 있습니다. 각 로케일은 개별 싱글톤을 해결합니다.

fake('nl_NL')->name()

filled() {.collection-method}

filled 함수는 주어진 값이 "빈값"이 아닌지 판별하여 결과를 반환합니다.

filled(0);
filled(true);
filled(false);

// true

filled('');
filled('   ');
filled(null);
filled(collect());

// false

filled의 반대는, blank 메소드를 확인하십시오.

info() {.collection-method}

info 함수는 로그에 정보를 기록합니다.

info('Some helpful information!');

문맥에대한 데이터를 함수에 배열로 전달할 수도 있습니다.

info('User login attempt failed.', ['id' => $user->id]);

logger() {.collection-method}

logger 함수는 로그debug 로그 레벨을 기록하는데 사용합니다.

logger('Debug message');

문맥에대한 데이터를 함수에 배열로 전달할 수도 있습니다.

logger('User has logged in.', ['id' => $user->id]);

함수에 아무런 값이 전달되지 않으면 logger 인스턴스가 반환됩니다.

logger()->error('You are not allowed here.');

method_field() {.collection-method}

method_field 함수는 HTTP 메소드 형식의 가짜(spoof) 값을 포함하는 HTML hidden Input 필드를 생성합니다. 예를 들어 Blade syntax에서 사용할 수 있습니다.

<form method="POST">
    {{ method_field('DELETE') }}
</form>

now() {.collection-method}

now 함수는 현재 시간을 기반으로한 Illuminate\Support\Carbon 인스턴스를 생성합니다.

$now = now();

old() {.collection-method}

old 함수는 세션에 저장된 이전 입력값(flashed)을 조회합니다. $value = old('value');

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

old 함수 에 대한 두 번째 인수로 제공되는 "기본값" 은 종종 Eloquent 모델의 속성이기 때문에 전체 Eloquent 모델을 old 함수에 대한 두 번째 인수로 간단히 전달할 수 있습니다. 그렇게 할 때, 라라벨은 old 함수에 제공된 첫 번째 인수가 "기본값"으로 간주되어야 하는 Eloquent 속성의 이름이라고 가정합니다:

{{ old('name', $user->name) }}

// Is equivalent to...

{{ old('name', $user) }}

optional() {.collection-method}

optional 함수는 인자를 전달받아 해당 객체의 프로퍼티에 엑세스 하거나, 메소드를 호출할 수 있도록 합니다. 지정된 객체가 null 이라면, 프로퍼티와 메소드는 에러를 유발하는 대신에 null 을 반환합니다.

return optional($user->address)->street;

{!! old('name', optional($user)->name) !!}

optional 함수는 두 번째 인자로 클로저를 받을 수 있습니다. 첫 번째 인자가 null이 아닌경우, 클로저가 호출됩니다.

return optional(User::find($id), function ($user) {
    return $user->name;
});

policy() {.collection-method}

policy 메소도는 주어진 클래스를 위한 policy 인스턴스를 조회합니다.

$policy = policy(App\Models\User::class);

redirect() {.collection-method}

redirect 함수는 리다이렉트 HTTP response-응답을 반환하거나, 인자 없이 호출되는 경우 리디렉터 인스턴스를 반환합니다.

return redirect($to = null, $status = 302, $headers = [], $secure = null);

return redirect('/home');

return redirect()->route('route.name');

report() {.collection-method}

report 함수는 exception 핸들러를 예외(exception)를 보고합니다.

report($e);

report 함수는 문자열을 인자로 받습니다. 문자열이 함수로 전달되면, 함수는 전달된 문자열을 메시지로 갖는 예외를 생성합니다.

report('Something went wrong.');

report_if() {.collection-method}

report_if 함수는 주어진 조건이 true 인 경우, exception 핸들러를 이용하여 예외를 보고합니다.

report_if($shouldReport, $e);

report_if($shouldReport, 'Something went wrong.');

report_unless() {.collection-method}

report_unless 함수는 주어진 조건이 false 인 경우, exception 핸들러를 이용하여 예외를 보고합니다.

report_unless($reportingDisabled, $e);

report_unless($reportingDisabled, 'Something went wrong.');

request() {.collection-method}

request 함수는 현재의 요청 인스턴스를 반환하거나 입력 아이템을 가져옵니다.

$request = request();

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

rescue() {.collection-method}

rescue 함수는 주어진 클로저를 실행하고, 실행중 발생하는 예외(exception)을 받아냅니다. catch 된 모든 예외(exception) exception 핸들러의 요청(request)에 대한 처리는 계속됩니다.

return rescue(function () {
    return $this->method();
});

rescue 함수에는 두 번째 인자를 전달 할 수 있는데, 이 인자는 클로저를 실행하는 동안 예외-exception가 발생하면 반환된 "기본값" 입니다.

return rescue(function () {
    return $this->method();
}, false);

return rescue(function () {
    return $this->method();
}, function () {
    return $this->failure();
});

resolve() {.collection-method}

resolve 함수는 서비스 컨테이너를 사용하여 주어진 클래스 또는 인터페이스를 의존성 해결하여 인스턴스를 반환합니다.

$api = resolve('HelpSpot\API');

response() {.collection-method}

response 함수는 응답 인스턴스를 생성하거나 응답 팩토리의 인스턴스를 가져옵니다.

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

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

retry() {.collection-method}

retry 함수는 주어진 최대 횟수가 될 때까지 주어진 콜백을 실행하려고 시도합니다. 콜백이 예외-exception를 던지지 않는다면, 결과 값이 반환됩니다. 콜백이 예외-exception를 던지면 자동으로 다시 시도됩니다. 최대 재시도 횟수를 초과하면 예외가 던져집니다.

return retry(5, function () {
    // Attempt 5 times while resting 100ms between attempts...
}, 100);

만약 수동으로 다시 실행을 시도하기까지의 시간(밀리초)을 수동으로 계산하려면 retry 함수에 대한 세 번째 인자로 클로저를 전달할 수 있습니다.

return retry(5, function () {
    // ...
}, function ($attempt, $exception) {
    return $attempt * 100;
});

보다편리하게, retry 함수에 첫번째 인자로 배열을 전달할 수 있습니다. 이 배열은 다음 시도 사이에 얼마의 밀리세컨드 동안 슬립모드에 들어갈것인지 결정하는데 사용합니다.

return retry([100, 200], function () {
    // Sleep for 100ms on first retry, 200ms on second retry...
});

특정 조건에서만 재시도하려면 retry 함수의 네 번째 인자로 클로저를 전달할 수 있습니다.

return retry(5, function () {
    // ...
}, 100, function ($exception) {
    return $exception instanceof RetryException;
});

session() {.collection-method}

session 함수는 세션 값을 얻거나 지정하는 데에 사용할 수 있습니다.

$value = session('key');

키 / 값 쌍들의 배열을 함수로 전달하여 값을 설정할 수 있습니다.

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

함수에 아무런 값도 전달되지 않는다면 세션 스토어가 반환됩니다.

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

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

tap() {.collection-method}

tap 함수는 임의의 $value 와 클로저 두개의 인자를 받아들입니다. $value 는 클로저에 전달되어 tap 함수에 의해서 반환됩니다. 반환되는 값은 클로저와 무관합니다.

$user = tap(User::first(), function ($user) {
    $user->name = 'taylor';

    $user->save();
});

tap 함수에 클로저를 전달하지 않는다면, 주어진 $value 에 모든 메소드를 호출할 수 있습니다. 메소드에서 반환하는 값은 메소드가 실제로 정의해서 반환하는 $value 와는 관계없이 항상 $value 가 됩니다. 예를 들어 Eloquent update 메소드는 일반적으로 정수값을 반환하지만, tap 메소드를 통해서 update 메소드를 호출을 체이닝하면 메소드가 모델 그 자체를 반환하도록 할 수 있습니다.

$user = tap($user)->update([
    'name' => $name,
    'email' => $email,
]);

클래스에 tap 메소드를 추가하기 위해서는 Illuminate\Support\Traits\Tappable Trait을 클래스에 추가하면됩니다. 이 Trait의 tap 메소드는 Closure만 인수로 받아들입니다. 객체 인스턴스 자체는 Closure에 전달되고 tap 메소드에 의해 반환됩니다.

return $user->tap(function ($user) {
    //
});

throw_if() {.collection-method}

throw_if 함수는 주어진 결과가 true 인 경우에 주어진 exception-예외를 던집니다.

throw_if(! Auth::user()->isAdmin(), AuthorizationException::class);

throw_if(
    ! Auth::user()->isAdmin(),
    AuthorizationException::class,
    'You are not allowed to access this page.'
);

throw_unless() {.collection-method}

throw_unless 함수는 주어진 결과가 false 인 경우에 주어진 exception-예외를 던집니다.

throw_unless(Auth::user()->isAdmin(), AuthorizationException::class);

throw_unless(
    Auth::user()->isAdmin(),
    AuthorizationException::class,
    'You are not allowed to access this page.'
);

today() {.collection-method}

today 함수는 현재 날짜를 기준으로한 Illuminate\Support\Carbon 인스턴스를 생성합니다.

$today = today();

trait_uses_recursive() {.collection-method}

trait_uses_recursive 함수는 해당 trait에서 사용된 모든 trait을 반환합니다.

$traits = trait_uses_recursive(\Illuminate\Notifications\Notifiable::class);

transform() {.collection-method}

transform 함수는 주어진 값이 빈값이 아닌 경우에 Closure를 실행하고 Closure의 결과를 반환합니다.

$callback = function ($value) {
    return $value * 2;
};

$result = transform(5, $callback);

// 10

세번째 인자로 기본값 또는 Closure 가 전달될 수 있습니다. 이 값은 첫 번째 인자가 빈값인 경우 반환됩니다.

$result = transform(null, $callback, 'The value is blank');

// The value is blank

validator() {.collection-method}

validator 함수는 주어진 인자를 통해서 새로운 validator 인스턴스를 생성합니다. Validator 파사드 대신 사용할 수도 있습니다.

$validator = validator($data, $rules, $messages);

value() {.collection-method}

value 함수는 자신에게 주어진 값을 그대로 반환합니다. 그렇지만 함수에 Closure를 전달하면 Closure가 실행되고 그 결과물이 반환됩니다.

$result = value(true);

// true

$result = value(function () {
    return false;
});

// false

value 함수는 추가적인 인자도 전달 받을 수 있습니다. 첫번째 인자가 클로저인 경우에 두 번째 인자가 클로저로 전달되며 그렇지 않은 경우에는 무시됩니다.

$result = value(function ($name) {
    return $parameter;
}, 'Taylor');

// 'Taylor'

view() {.collection-method}

view 함수는 view 인스턴스를 조회합니다.

return view('auth.login');

with() {.collection-method}

with 함수는 자신에게 주어진 값을 그대로 반환합니다. 만약 함수에 두 번째 인자로 Closure 가 전달되면, Closure 가 실행되어 그 결과를 반환합니다.

$callback = function ($value) {
    return is_numeric($value) ? $value * 2 : 0;
};

$result = with(5, $callback);

// 10

$result = with(null, $callback);

// 0

$result = with(5, null);

// 5

기타 유틸리티

벤치마킹

때때로 애플리케이션의 특정 부분의 성능을 빠르게 테스트하고 싶을 수 있습니다. 이러한 경우 Benchmark 지원 클래스를 활용하여 주어진 콜백이 완료되는 데 걸리는 시간(밀리초)을 측정할 수 있습니다.

<?php

use App\Models\User;
use Illuminate\Support\Benchmark;

Benchmark::dd(fn () => User::find(1)); // 0.1 ms

Benchmark::dd([
    'Scenario 1' => fn () => User::count(), // 0.5 ms
    'Scenario 2' => fn () => User::all()->count(), // 20.0 ms
]);

기본적으로 주어진 콜백은 한 번(1회 반복) 실행되고 지속 시간은 브라우저/콘솔에 표시됩니다.

콜백을 두 번 이상 호출하려면 메소드에 대한 두 번째 인수로 콜백을 호출해야 하는 반복 횟수를 지정할 수 있습니다. 콜백을 두 번 이상 실행하면 Benchmark 클래스는 모든 반복에서 콜백을 실행하는 데 걸린 평균 시간(밀리초)을 반환합니다.

Benchmark::dd(fn () => User::count(), iterations: 10); // 0.5 ms

복권

라라벨 복권 클래스는 주어진 확률에 기반해서 콜백을 실행하는데 사용할 수 있습니다. 인입되는 요청에 대해 확률적으로 코드를 실행하고자 할 때 특히 유용하게 쓸 수 있습니다.

use Illuminate\Support\Lottery;

Lottery::odds(1, 20)
    ->winner(fn () => $user->won())
    ->loser(fn () => $user->lost())
    ->choose();

복권 클래스를 다른 라라벨 기능과 결합해서 사용할 수도 있습니다. 예를 들어, 슬로 쿼리 중 작은 비율만 예외 핸들러에 보고하고 싶을 수 있습니다. 그리고 복권 클래스가 callable 이기 때문에 callable을 허용하는 어떠한 메서드에도 복권 클래스 인스턴스를 전달할 수 있습니다.

use Carbon\CarbonInterval;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Lottery;

DB::whenQueryingForLongerThan(
    CarbonInterval::seconds(2),
    Lottery::odds(1, 100)->winner(fn () => report('Querying > 2 seconds.')),
);

복권 테스트하기

라라벨은 애플리케이션의 복권 호출을 쉽게 테스트할 수 있는 몇 가지 간단한 방법을 제공합니다.

// Lottery will always win...
// 항상 이깁니다...
Lottery::alwaysWin();

// Lottery will always lose...
// 항상 집니다...
Lottery::alwaysLose();

// Lottery will win then lose, and finally return to normal behavior...
// 한 번 이기고, 한 번 진 다음 원래대로 동작합니다...
Lottery::fix([true, false]);

// Lottery will return to normal behavior...
// 정상적인 동작으로 돌아옵니다...
Lottery::determineResultsNormally();