duanfan8360 2017-07-09 20:52
浏览 51
已采纳

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

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

  • 写回答

1条回答 默认 最新

  • donglulong0877 2017-07-09 20:58
    关注

    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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程