<?php namespace Laravel\Database\Connectors; use PDO; class SQLite extends Connector { /** * The path to the SQLite databases for the application. * * @var string */ protected $path; /** * Create a new SQLite database connector instance. * * @param string $path * @return void */ public function __construct($path) { $this->path = $path; } /** * Establish a PDO database connection for a given database configuration. * * @param array $config * @return PDO */ public function connect($config) { $options = $this->options($config); // SQLite provides supported for "in-memory" databases, which exist only for the // lifetime of the request. Any given in-memory database may only have one PDO // connection open to it at a time. Generally, these databases are use for // testing and development purposes, not in production scenarios. if ($config['database'] == ':memory:') { return new PDO('sqlite::memory:', null, null, $options); } // First, we will check for the database in the default storage directory for the // application. If we don't find the database there, we will assume the database // name is actually a full qualified path to the database on disk and attempt // to load it. If we still can't find it, we'll bail out. elseif (file_exists($path = $this->path.$config['database'].'.sqlite')) { return new PDO('sqlite:'.$path, null, null, $options); } elseif (file_exists($config['database'])) { return new PDO('sqlite:'.$config['database'], null, null, $options); } throw new \Exception("SQLite database [{$config['database']}] could not be found."); } }