init() 공개 메소드

init the class
부터: 3.0.0
public init ( string $directory = null, string $extension = null ) : Cache
$directory string directory of the cache
$extension string extension of the cached files
리턴 Cache
예제 #1
0
 /**
  * renderTemplate
  *
  * @since 3.0.0
  *
  * @return mixed
  */
 public static function renderTemplate()
 {
     $registry = Registry::getInstance();
     $request = Request::getInstance();
     $language = Language::getInstance();
     /* handle notification */
     if (!is_dir(self::$_configArray['directory']) && !mkdir(self::$_configArray['directory'])) {
         self::setNotification('error', $language->get('directory_not_found') . $language->get('colon') . ' ' . self::$_configArray['directory'] . $language->get('point'));
     }
     /* prevent as needed */
     if ($request->getPost() || $registry->get('noCache')) {
         return false;
     }
     /* cache as needed */
     $cache = new Cache();
     $cache->init(self::$_configArray['directory'], self::$_configArray['extension']);
     $fullRoute = $registry->get('fullRoute');
     /* load from cache */
     if ($cache->validate($fullRoute, self::$_configArray['lifetime'])) {
         $raw = $cache->retrieve($fullRoute);
         $content = preg_replace('/' . self::$_configArray['tokenPlaceholder'] . '/', $registry->get('token'), self::_uncompress($raw));
         return ['header' => function_exists('gzdeflate') ? 'content-encoding: deflate' : null, 'content' => self::_compress($content)];
     } else {
         $raw = Template\Tag::partial('templates/' . $registry->get('template') . '/index.phtml');
         $content = preg_replace('/' . $registry->get('token') . '/', self::$_configArray['tokenPlaceholder'], $raw);
         $cache->store($fullRoute, self::_compress($content));
         return ['content' => $raw];
     }
 }
예제 #2
0
 /**
  * clear the invalid cache
  *
  * @since 3.0.0
  *
  * @param array $optionArray
  *
  * @return boolean
  */
 protected function _clearInvalid($optionArray = [])
 {
     $directory = $optionArray['directory'];
     $extension = $optionArray['extension'];
     $lifetime = is_numeric($optionArray['lifetime']) ? $optionArray['lifetime'] : 3600;
     $cache = new BaseCache();
     return $cache->init($directory, $extension)->clearInvalid($lifetime);
 }
예제 #3
0
 /**
  * concat the collection
  *
  * @since 3.0.0
  *
  * @param array $optionArray
  * @param array $rewriteArray
  *
  * @return Loader
  */
 public function concat($optionArray = [], $rewriteArray = [])
 {
     $bundleArray = [];
     $restArray = [];
     /* prevent as needed */
     if ($this->_registry->get('noCache')) {
         return $this;
     }
     /* process collection */
     foreach ($this->_collectionArray as $collectionKey => $attributeArray) {
         $path = $attributeArray[$optionArray['attribute']];
         $fileArray = pathinfo($path);
         if (is_file($path) && $fileArray['extension'] === $optionArray['extension']) {
             $bundleArray[] = $attributeArray[$optionArray['attribute']];
         } else {
             $restArray[] = $attributeArray;
         }
     }
     /* cache as needed */
     $cache = new Cache();
     $cache->init($optionArray['directory'], $optionArray['extension']);
     /* load from cache */
     if ($cache->validate($bundleArray, $optionArray['lifetime'])) {
         $this->_collectionArray = $restArray;
         $this->_collectionArray['bundle'] = [$optionArray['attribute'] => $cache->getPath($bundleArray)];
         if ($optionArray['extension'] === 'css') {
             $this->_collectionArray['bundle']['rel'] = 'stylesheet';
         }
     } else {
         $content = $this->_getContent($bundleArray, $rewriteArray);
         $cache->store($bundleArray, $content);
     }
     return $this;
 }
예제 #4
0
 /**
  * testClearInvalid
  *
  * @since 3.0.0
  */
 public function testClearInvalid()
 {
     /* setup */
     $cache = new Cache();
     $cache->init(Stream::url('root'), 'cache')->store('test1', 'test')->store('test2', 'test')->store('test3', 'test')->store('test4', 'test');
     touch($cache->getPath('test1'), time() - 3600);
     touch($cache->getPath('test2'), time() - 3600);
     touch($cache->getPath('test3'), time() - 3600);
     $cache->clearInvalid();
     /* compare */
     $this->assertFalse(is_file($cache->getPath('test1')));
     $this->assertFalse(is_file($cache->getPath('test2')));
     $this->assertFalse(is_file($cache->getPath('test3')));
     $this->assertTrue(is_file($cache->getPath('test4')));
 }