> 백엔드 개발 > PHP 튜토리얼 > Laravel中类中的构造函数传参是可以自动new一个传递进去的吗?

Laravel中类中的构造函数传参是可以自动new一个传递进去的吗?

WBOY
풀어 주다: 2016-06-06 20:40:57
원래의
1663명이 탐색했습니다.

这是LaravelAuth\Guard的构造函数:

<code>    /**
     * 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;
    }
</code>
로그인 후 복사
로그인 후 복사

其中传入了参数SessionStore $session
但是session的构造函数是这样的:

<code>public function __construct($name, SessionHandlerInterface $handler, $id = null)
    {
        $this->setId($id);
        $this->name = $name;
        $this->handler = $handler;
        $this->metaBag = new MetadataBag;
    }
</code>
로그인 후 복사
로그인 후 복사

这里是有参数的,为什么Guard的构造函数可以自动生成session?
php原生提供的还是Laravel提供的?

回复内容:

这是LaravelAuth\Guard的构造函数:

<code>    /**
     * 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;
    }
</code>
로그인 후 복사
로그인 후 복사

其中传入了参数SessionStore $session
但是session的构造函数是这样的:

<code>public function __construct($name, SessionHandlerInterface $handler, $id = null)
    {
        $this->setId($id);
        $this->name = $name;
        $this->handler = $handler;
        $this->metaBag = new MetadataBag;
    }
</code>
로그인 후 복사
로그인 후 복사

这里是有参数的,为什么Guard的构造函数可以自动生成session?
php原生提供的还是Laravel提供的?

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

<code>/**
 * 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']);
}
</code>
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿