它有什么作用 ? (PHP 特质)

What does it do ? (PHP Trait)

我刚找到这段代码,但我不知道如何 google 它。 :-)

最后一个特征是做什么的? 我无法理解它的语法。 如果花括号之间的那些线是新实例的参数,它不应该在括号之间吗?

<?php

namespace Laravel\Dusk;

use Closure;
use BadMethodCallException;
use Illuminate\Support\Str;
use Illuminate\Support\Traits\Macroable;
use Facebook\WebDriver\WebDriverDimension;

class Browser
{
    use Concerns\InteractsWithAuthentication,
        Concerns\InteractsWithCookies,
        Concerns\InteractsWithElements,
        Concerns\InteractsWithJavascript,
        Concerns\InteractsWithMouse,
        Concerns\MakesAssertions,
        Concerns\WaitsForElements,
        Macroable {
            __call as macroCall;
        }

    // ...

}

代码来自Laravel\Dusk。 这里是原文GitHub repository and the Class itself

这个:

namespace Laravel\Dusk;

use Illuminate\Support\Traits\Macroable;

class Browser
{
    use Macroable {
       __call as macroCall;
    }

    public function __call($method, $parameters)
    {
        // this is defined in THIS class
    }
}

只是从 Macroable 特征中为 __call 方法起别名,并使其作为

可用
$this->macroCall($method, $parameters)

这是为了避免在 class 和导入的 trait

中定义的 __call 方法发生冲突