name: StartSession
class_comment: null
dependencies:
- name: Closure
  type: class
  source: Closure
- name: Session
  type: class
  source: Illuminate\Contracts\Session\Session
- name: Request
  type: class
  source: Illuminate\Http\Request
- name: Route
  type: class
  source: Illuminate\Routing\Route
- name: SessionManager
  type: class
  source: Illuminate\Session\SessionManager
- name: Carbon
  type: class
  source: Illuminate\Support\Carbon
- name: Date
  type: class
  source: Illuminate\Support\Facades\Date
- name: Cookie
  type: class
  source: Symfony\Component\HttpFoundation\Cookie
- name: Response
  type: class
  source: Symfony\Component\HttpFoundation\Response
properties:
- name: manager
  visibility: protected
  comment: '# * The session manager.

    # *

    # * @var \Illuminate\Session\SessionManager'
- name: cacheFactoryResolver
  visibility: protected
  comment: '# * The callback that can resolve an instance of the cache factory.

    # *

    # * @var callable|null'
methods:
- name: __construct
  visibility: public
  parameters:
  - name: manager
  - name: cacheFactoryResolver
    default: 'null'
  comment: "# * The session manager.\n# *\n# * @var \\Illuminate\\Session\\SessionManager\n\
    # */\n# protected $manager;\n# \n# /**\n# * The callback that can resolve an instance\
    \ of the cache factory.\n# *\n# * @var callable|null\n# */\n# protected $cacheFactoryResolver;\n\
    # \n# /**\n# * Create a new session middleware.\n# *\n# * @param  \\Illuminate\\\
    Session\\SessionManager  $manager\n# * @param  callable|null  $cacheFactoryResolver\n\
    # * @return void"
- name: handle
  visibility: public
  parameters:
  - name: request
  - name: next
  comment: '# * Handle an incoming request.

    # *

    # * @param  \Illuminate\Http\Request  $request

    # * @param  \Closure  $next

    # * @return mixed'
- name: handleRequestWhileBlocking
  visibility: protected
  parameters:
  - name: request
  - name: session
  - name: next
  comment: '# * Handle the given request within session state.

    # *

    # * @param  \Illuminate\Http\Request  $request

    # * @param  \Illuminate\Contracts\Session\Session  $session

    # * @param  \Closure  $next

    # * @return mixed'
- name: handleStatefulRequest
  visibility: protected
  parameters:
  - name: request
  - name: session
  - name: next
  comment: '# * Handle the given request within session state.

    # *

    # * @param  \Illuminate\Http\Request  $request

    # * @param  \Illuminate\Contracts\Session\Session  $session

    # * @param  \Closure  $next

    # * @return mixed'
- name: startSession
  visibility: protected
  parameters:
  - name: request
  - name: session
  comment: '# * Start the session for the given request.

    # *

    # * @param  \Illuminate\Http\Request  $request

    # * @param  \Illuminate\Contracts\Session\Session  $session

    # * @return \Illuminate\Contracts\Session\Session'
- name: getSession
  visibility: public
  parameters:
  - name: request
  comment: '# * Get the session implementation from the manager.

    # *

    # * @param  \Illuminate\Http\Request  $request

    # * @return \Illuminate\Contracts\Session\Session'
- name: collectGarbage
  visibility: protected
  parameters:
  - name: session
  comment: '# * Remove the garbage from the session if necessary.

    # *

    # * @param  \Illuminate\Contracts\Session\Session  $session

    # * @return void'
- name: configHitsLottery
  visibility: protected
  parameters:
  - name: config
  comment: '# * Determine if the configuration odds hit the lottery.

    # *

    # * @param  array  $config

    # * @return bool'
- name: storeCurrentUrl
  visibility: protected
  parameters:
  - name: request
  - name: session
  comment: '# * Store the current URL for the request if necessary.

    # *

    # * @param  \Illuminate\Http\Request  $request

    # * @param  \Illuminate\Contracts\Session\Session  $session

    # * @return void'
- name: addCookieToResponse
  visibility: protected
  parameters:
  - name: response
  - name: session
  comment: '# * Add the session cookie to the application response.

    # *

    # * @param  \Symfony\Component\HttpFoundation\Response  $response

    # * @param  \Illuminate\Contracts\Session\Session  $session

    # * @return void'
- name: saveSession
  visibility: protected
  parameters:
  - name: request
  comment: '# * Save the session data to storage.

    # *

    # * @param  \Illuminate\Http\Request  $request

    # * @return void'
- name: getSessionLifetimeInSeconds
  visibility: protected
  parameters: []
  comment: '# * Get the session lifetime in seconds.

    # *

    # * @return int'
- name: getCookieExpirationDate
  visibility: protected
  parameters: []
  comment: '# * Get the cookie lifetime in seconds.

    # *

    # * @return \DateTimeInterface|int'
- name: sessionConfigured
  visibility: protected
  parameters: []
  comment: '# * Determine if a session driver has been configured.

    # *

    # * @return bool'
- name: sessionIsPersistent
  visibility: protected
  parameters:
  - name: config
    default: 'null'
  comment: '# * Determine if the configured session driver is persistent.

    # *

    # * @param  array|null  $config

    # * @return bool'
- name: cache
  visibility: protected
  parameters:
  - name: driver
  comment: '# * Resolve the given cache driver.

    # *

    # * @param  string  $driver

    # * @return \Illuminate\Cache\Store'
traits:
- Closure
- Illuminate\Contracts\Session\Session
- Illuminate\Http\Request
- Illuminate\Routing\Route
- Illuminate\Session\SessionManager
- Illuminate\Support\Carbon
- Illuminate\Support\Facades\Date
- Symfony\Component\HttpFoundation\Cookie
- Symfony\Component\HttpFoundation\Response
interfaces: []