這是
Laravel中
Auth\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提供的?
回複內容:
這是Laravel中Auth\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']);}