CrossPHP
  • Namespace
  • Class
  • Download

Namespaces

  • Cross
    • Auth
    • Cache
      • Driver
      • Request
    • Core
    • DB
      • Connecter
      • Drivers
      • SQLAssembler
    • Exception
    • Http
    • I
    • Lib
      • Document
    • Module
    • MVC
    • Runtime
  • None

Classes

  • Cross\Auth\CookieAuth
  • Cross\Auth\SessionAuth
  • Cross\Cache\Driver\FileCacheDriver
  • Cross\Cache\Driver\MemcacheDriver
  • Cross\Cache\Driver\RedisDriver
  • Cross\Cache\Request\FileCache
  • Cross\Cache\Request\Memcache
  • Cross\Cache\Request\RedisCache
  • Cross\Cache\RequestCache
  • Cross\Core\Annotate
  • Cross\Core\Application
  • Cross\Core\ArrayMap
  • Cross\Core\Config
  • Cross\Core\CrossArray
  • Cross\Core\Delegate
  • Cross\Core\FrameBase
  • Cross\Core\Helper
  • Cross\Core\HttpAuth
  • Cross\Core\Loader
  • Cross\Core\Rest
  • Cross\Core\Router
  • Cross\DB\Connecter\BaseConnecter
  • Cross\DB\Connecter\MySQLConnecter
  • Cross\DB\Connecter\PgSQLConnecter
  • Cross\DB\Connecter\SQLiteConnecter
  • Cross\DB\DBFactory
  • Cross\DB\Drivers\CouchDriver
  • Cross\DB\Drivers\MongoDriver
  • Cross\DB\Drivers\PDOSqlDriver
  • Cross\DB\SQLAssembler\MySQLAssembler
  • Cross\DB\SQLAssembler\PgSQLAssembler
  • Cross\DB\SQLAssembler\SQLAssembler
  • Cross\DB\SQLAssembler\SQLiteAssembler
  • Cross\Http\Request
  • Cross\Http\Response
  • Cross\Lib\Array2XML
  • Cross\Lib\Document\CallTree
  • Cross\Lib\Document\CallTreeToHTML
  • Cross\Lib\Document\HTML
  • Cross\Lib\StringToPHPStream
  • Cross\Module\SQLModule
  • Cross\MVC\Controller
  • Cross\MVC\Module
  • Cross\MVC\View
  • Cross\Runtime\ClosureContainer

Interfaces

  • Cross\I\CacheInterface
  • Cross\I\HttpAuthInterface
  • Cross\I\PDOConnecter
  • Cross\I\RequestCacheInterface
  • Cross\I\RouterInterface
  • Cross\I\SqlInterface

Exceptions

  • Cross\Exception\CacheException
  • Cross\Exception\CoreException
  • Cross\Exception\CrossException
  • Cross\Exception\FrontException

Functions

  • ascLogo
  • line
  • tBody
  • th
  • tHead
 1 <?php
 2 /**
 3  * Cross - a micro PHP 5 framework
 4  *
 5  * @link        http://www.crossphp.com
 6  * @license     MIT License
 7  */
 8 
 9 namespace Cross\Cache;
10 
11 use Cross\I\RequestCacheInterface;
12 use Cross\Exception\CoreException;
13 use Cross\Cache\Request\FileCache;
14 use Cross\Cache\Request\RedisCache;
15 use Cross\Cache\Request\Memcache;
16 use ReflectionClass;
17 
18 /**
19  * RequestCache工厂类
20  *
21  * @author wonli <wonli@live.com>
22  * Class RequestCache
23  * @package Cross\Cache
24  */
25 class RequestCache
26 {
27     const FILE = 1;
28     const MEMCACHE = 2;
29     const REDIS = 3;
30 
31     /**
32      * @var FileCache|Memcache|RedisCache|RequestCacheInterface
33      */
34     static $instance;
35 
36     /**
37      * RequestCache
38      *
39      * @param int|object|string $type
40      * @param array $options
41      * @return FileCache|Memcache|RedisCache|RequestCacheInterface
42      * @throws CoreException
43      */
44     static function factory($type, array $options)
45     {
46         switch ($type) {
47             case 'file':
48             case self::FILE:
49                 $instance = new FileCache($options);
50                 break;
51 
52             case 'memcache':
53             case self::MEMCACHE:
54                 $instance = new Memcache($options);
55                 break;
56 
57             case 'redis':
58             case self::REDIS:
59                 $instance = new RedisCache($options);
60                 break;
61 
62             default:
63                 if (is_string($type)) {
64                     try {
65                         $rf = new ReflectionClass($type);
66                         if ($rf->implementsInterface('Cross\I\RequestCacheInterface')) {
67                             $instance = $rf->newInstance();
68                         } else {
69                             throw new CoreException('Must implement RequestCacheInterface');
70                         }
71                     } catch (\Exception $e) {
72                         throw new CoreException('Reflection ' . $e->getMessage());
73                     }
74                 } elseif (is_object($type)) {
75                     if ($type instanceof RequestCacheInterface) {
76                         $instance = $type;
77                     } else {
78                         throw new CoreException('Must implement RequestCacheInterface');
79                     }
80                 } else {
81                     throw new CoreException('Unsupported cache type!');
82                 }
83         }
84 
85         $instance->setConfig($options);
86         return $instance;
87     }
88 }
89 
CrossPHP API documentation generated by ApiGen