Laravel中類中的建構函式傳參是可以自動new一個傳遞進去的嗎?

來源:互聯網
上載者:User
這是 LaravelAuth\Guard的建構函式:

    /**     * Create a new authentication guard.     *     * @param  \Illuminate\Auth\UserProviderInterface  $provider     * @param  \Illuminate\Session\Store  $session     * @param  \Symfony\Component\HttpFoundation\Request  $request     * @return void     */    public function __construct(UserProviderInterface $provider,                                SessionStore $session,                                Request $request = null)    {        $this->session = $session;        $this->request = $request;        $this->provider = $provider;    }

其中傳入了參數SessionStore $session
但是session的建構函式是這樣的:

public function __construct($name, SessionHandlerInterface $handler, $id = null)    {        $this->setId($id);        $this->name = $name;        $this->handler = $handler;        $this->metaBag = new MetadataBag;    }

這裡是有參數的,為什麼Guard的建構函式可以自動產生session?
php原生提供的還是Laravel提供的?

回複內容:

這是LaravelAuth\Guard的建構函式:

    /**     * Create a new authentication guard.     *     * @param  \Illuminate\Auth\UserProviderInterface  $provider     * @param  \Illuminate\Session\Store  $session     * @param  \Symfony\Component\HttpFoundation\Request  $request     * @return void     */    public function __construct(UserProviderInterface $provider,                                SessionStore $session,                                Request $request = null)    {        $this->session = $session;        $this->request = $request;        $this->provider = $provider;    }

其中傳入了參數SessionStore $session
但是session的建構函式是這樣的:

public function __construct($name, SessionHandlerInterface $handler, $id = null)    {        $this->setId($id);        $this->name = $name;        $this->handler = $handler;        $this->metaBag = new MetadataBag;    }

這裡是有參數的,為什麼Guard的建構函式可以自動產生session?
php原生提供的還是Laravel提供的?

https://github.com/laravel/framework/blob/4.2/src/Illuminate/Auth/AuthManager.php#L51

/** * Create an instance of the Eloquent driver. * * @return \Illuminate\Auth\Guard */public function createEloquentDriver(){    $provider = $this->createEloquentProvider();    return new Guard($provider, $this->app['session.store']);}
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.