diff --git a/composer.json b/composer.json index 642dd61b..906aa3f2 100644 --- a/composer.json +++ b/composer.json @@ -24,6 +24,9 @@ "latte/latte": "~2.4", "tracy/tracy": "^2.4" }, + "suggest": { + "ext-pdo_sqlite": "to use SQLiteStorage or SQLiteJournal" + }, "conflict": { "nette/nette": "<2.2" }, diff --git a/src/Bridges/CacheDI/CacheExtension.php b/src/Bridges/CacheDI/CacheExtension.php index f3d14bc9..eed4ff20 100644 --- a/src/Bridges/CacheDI/CacheExtension.php +++ b/src/Bridges/CacheDI/CacheExtension.php @@ -29,20 +29,16 @@ public function loadConfiguration() { $builder = $this->getContainerBuilder(); - if (extension_loaded('pdo_sqlite')) { - $builder->addDefinition($this->prefix('journal')) - ->setClass(Nette\Caching\Storages\IJournal::class) - ->setFactory(Nette\Caching\Storages\SQLiteJournal::class, [$this->tempDir . '/cache/journal.s3db']); - } + $builder->addDefinition($this->prefix('journal')) + ->setClass(Nette\Caching\Storages\IJournal::class) + ->setFactory(Nette\Caching\Storages\SQLiteJournal::class, [$this->tempDir . '/cache/journal.s3db']); $builder->addDefinition($this->prefix('storage')) ->setClass(Nette\Caching\IStorage::class) ->setFactory(Nette\Caching\Storages\FileStorage::class, [$this->tempDir . '/cache']); if ($this->name === 'cache') { - if (extension_loaded('pdo_sqlite')) { - $builder->addAlias('nette.cacheJournal', $this->prefix('journal')); - } + $builder->addAlias('nette.cacheJournal', $this->prefix('journal')); $builder->addAlias('cacheStorage', $this->prefix('storage')); } } diff --git a/src/Caching/Storages/SQLiteJournal.php b/src/Caching/Storages/SQLiteJournal.php index 30ab17fc..e3a3a0d0 100644 --- a/src/Caching/Storages/SQLiteJournal.php +++ b/src/Caching/Storages/SQLiteJournal.php @@ -30,15 +30,16 @@ class SQLiteJournal implements IJournal */ public function __construct($path) { - if (!extension_loaded('pdo_sqlite')) { - throw new Nette\NotSupportedException('SQLiteJournal requires PHP extension pdo_sqlite which is not loaded.'); - } $this->path = $path; } private function open() { + if (!extension_loaded('pdo_sqlite')) { + throw new Nette\NotSupportedException('SQLiteJournal requires PHP extension pdo_sqlite which is not loaded.'); + } + if ($this->path !== ':memory:' && !is_file($this->path)) { touch($this->path); // ensures ordinary file permissions }