Browse Source

Throw exception early if required extension is not loaded.

This allows showing a better error message to developer instead of the
generic one shown by Cache class.

Closes #14567.
ADmad 5 years ago
parent
commit
15afa0f1fb

+ 2 - 1
src/Cache/Engine/ApcuEngine.php

@@ -18,6 +18,7 @@ namespace Cake\Cache\Engine;
 
 use APCUIterator;
 use Cake\Cache\CacheEngine;
+use RuntimeException;
 
 /**
  * APCu storage engine for cache
@@ -43,7 +44,7 @@ class ApcuEngine extends CacheEngine
     public function init(array $config = []): bool
     {
         if (!extension_loaded('apcu')) {
-            return false;
+            throw new RuntimeException('The `apcu` extension must be enabled to use ApcuEngine.');
         }
 
         return parent::init($config);

+ 2 - 1
src/Cache/Engine/MemcachedEngine.php

@@ -19,6 +19,7 @@ namespace Cake\Cache\Engine;
 use Cake\Cache\CacheEngine;
 use InvalidArgumentException;
 use Memcached;
+use RuntimeException;
 
 /**
  * Memcached storage engine for cache. Memcached has some limitations in the amount of
@@ -103,7 +104,7 @@ class MemcachedEngine extends CacheEngine
     public function init(array $config = []): bool
     {
         if (!extension_loaded('memcached')) {
-            return false;
+            throw new RuntimeException('The `memcached` extension must be enabled to use MemcachedEngine.');
         }
 
         $this->_serializers = [

+ 2 - 1
src/Cache/Engine/RedisEngine.php

@@ -20,6 +20,7 @@ namespace Cake\Cache\Engine;
 use Cake\Cache\CacheEngine;
 use Redis;
 use RedisException;
+use RuntimeException;
 
 /**
  * Redis storage engine for cache.
@@ -76,7 +77,7 @@ class RedisEngine extends CacheEngine
     public function init(array $config = []): bool
     {
         if (!extension_loaded('redis')) {
-            return false;
+            throw new RuntimeException('The `redis` extension must be enabled to use RedisEngine.');
         }
 
         if (!empty($config['host'])) {

+ 2 - 1
src/Cache/Engine/WincacheEngine.php

@@ -17,6 +17,7 @@ declare(strict_types=1);
 namespace Cake\Cache\Engine;
 
 use Cake\Cache\CacheEngine;
+use RuntimeException;
 
 /**
  * Wincache storage engine for cache
@@ -44,7 +45,7 @@ class WincacheEngine extends CacheEngine
     public function init(array $config = []): bool
     {
         if (!extension_loaded('wincache')) {
-            return false;
+            throw new RuntimeException('The `wincache` extension must be enabled to use WincacheEngine.');
         }
 
         parent::init($config);