... в php функциональных параметрах - PullRequest
0 голосов
/ 07 апреля 2020

Я читал статью о создании ролей и разрешений в laravel. Там я увидел три точки ... внутри скобок функций, например

public function hasRole(... $roles ) {

Я не мог понять, для чего здесь три точки ....

Пример ссылки: https://www.larashout.com/laravel-roles-and-permissions

/**
 * @param mixed ...$roles
 * @return bool
 */
public function hasRole(... $roles ) {
    foreach ($roles as $role) {
        if ($this->roles->contains('slug', $role)) {
            return true;
        }
    }
    return false;
}

Заранее спасибо.

1 Ответ

1 голос
/ 07 апреля 2020

Это специальный унарный оператор PHP, называемый «оператор распространения», который позволяет вам иметь параметры переменной длины в методе, т.е. метод может принимать 0 или более параметров для параметра переменной длины.

Ниже приведен пример для лучшего понимания:

Например,

<?php
function sum(...$numbers) {
    $acc = 0;
    foreach ($numbers as $n) {
        $acc += $n;
    }
    return $acc;
 }

echo "\n".sum(1, 2, 3, 4);
echo "\n".sum(1);
echo "\n".sum();

Вывод:

10
1
0

Ссылка: https://www.php.net/manual/en/functions.arguments.php#functions .variable-arg- список

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...