I just found this code and I have got no idea how to google it. :-)
What does the last trait do ? I cannot understand it's syntax. If those lines between the curly braces would be parameters for a new instance, shouldn't it be between parentheses?
<?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;
}
// ...
}
The code is from Laravel\Dusk. Here is the original GitHub repository and the Class itself
This:
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
}
}
Just aliases the __call
method from Macroable
trait and makes it available as
$this->macroCall($method, $parameters)
This is needed to avoid the conflict of the __call
method which is defined in both this class and the imported trait