示例#1
0
文件: Str.php 项目: firaga/operation
 private function _aParseVar($sStart, $sEnd, $sTemplateDir, &$aFilelist)
 {
     $arr = array();
     while (!$this->bEnd()) {
         $block = $this->sGetBlockStr($sStart, $sEnd);
         if (strlen($block)) {
             if (0 == strncasecmp($block, 'include', 7)) {
                 $objblock = new Ko_View_Str(substr($block, 7));
                 $filename = $objblock->_sGetFile($sTemplateDir);
                 if (is_file($filename)) {
                     $aFilelist[] = $filename;
                     $str = file_get_contents($filename);
                     $objfile = new Ko_View_Str($str);
                     $arr = array_merge($arr, $objfile->_aParseVar($sStart, $sEnd, $sTemplateDir, $aFilelist));
                 }
             } else {
                 $objblock = new Ko_View_Str($block);
                 while (!$objblock->bEnd()) {
                     $str = $objblock->sGetAutoStr();
                     if (strlen($str)) {
                         $arr[] = $str;
                     }
                 }
             }
         }
     }
     return array_unique($arr);
 }
示例#2
0
 private function _aGetAutoArr($sFilePath)
 {
     $templateDir = $this->_sGetTemplateDir();
     $sFullname = Ko_View_Str::SGetAbsoluteFile($sFilePath, $templateDir);
     if (!is_file($sFullname)) {
         return array();
     }
     $stime = filemtime($sFullname);
     $sHashFile = $this->_oSmarty->getCompileDir() . '/' . KO_VIEW_AUTOTAG . '_' . md5($sFullname);
     $htime = is_file($sHashFile) ? filemtime($sHashFile) : 0;
     if ($htime >= $stime) {
         $arr = Ko_Tool_Enc::ADecode(file_get_contents($sHashFile));
         if (false !== $arr) {
             $rebuild = false;
             foreach ($arr[0] as $file) {
                 $itime = is_file($file) ? filemtime($file) : time();
                 if ($htime < $itime) {
                     $rebuild = true;
                     break;
                 }
             }
             if (!$rebuild) {
                 return $arr[1];
             }
         }
     }
     $aFilelist = array();
     $sContent = file_get_contents($sFullname);
     $str = new Ko_View_Str($sContent);
     $aArr = $str->aParseArr($this->_oSmarty->left_delimiter, $this->_oSmarty->right_delimiter, $templateDir, $aFilelist);
     file_put_contents($sHashFile, Ko_Tool_Enc::SEncode(array($aFilelist, $aArr)));
     return $aArr;
 }