function testCache() { $dir = __DIR__ . '/../cache'; $cache = new File(['directory' => $dir]); $users = ['Masoud', 'Alireza']; $cache->write('users', $users); $this->assertCount(1, $cache->stats()); $this->assertTrue($cache->contains('users')); $this->assertEquals($users, $cache->read('users')); $this->assertFalse($cache->expired('users', 1)); $i = 0; $posts = ['Post 1', 'Post 2']; for ($j = 0; $j < 10; $j++) { $result = $cache->remember('posts', function () use(&$i, $posts) { $i++; return $posts; }, 10); } $this->assertEquals(1, $i); $this->assertEquals($posts, $result); $this->assertEquals($posts, $cache->read('posts')); $this->assertCount(2, $cache->stats()); $cache->delete('users'); $this->assertFalse($cache->contains('users')); $this->assertTrue($cache->contains('posts')); $cache->deleteAll(); $this->assertCount(0, $cache->stats()); @unlink($dir); }
function help_search($appname, $query, $lang) { loader_import('saf.File'); loader_import('saf.File.Directory'); $query = help_split_query($query); //info ($query); $files = Dir::find('*.html', 'inc/app/' . $appname . '/docs/' . $lang); if (count($files) == 0) { return false; // no help files } $results = array(); foreach ($files as $file) { if (strstr($file, '/.')) { continue; } if ($hits = File::contains($query, false, $file, true, 'strip_tags')) { $results[] = help_extract_info($file, $query, $hits); } } // sort by hits now for ($i = 0; $i < count($results); $i++) { for ($j = $i + 1; $j < count($results); $j++) { if ($results[$j]->hits > $results[$i]->hits) { $tmp = $results[$j]; $results[$j] = $results[$i]; $results[$i] = $tmp; } } } return $results; }
/** * Searches a directory or directories (recursively) for a file * that contains a given string or pattern. Note: this method requires * the saf.File class. * * @access public * @param string $string * @param string $basedir * @param boolean $recursive * @param boolean $regex * @return array * */ function findInFiles($string, $basedir, $recursive = 0, $regex = 0) { $dir = new Dir($basedir); $res = array(); $files = $dir->read_all(); //echo "evaluating $basedir...\n"; foreach ($files as $file) { if ($file == '.' || $file == '..') { continue; } //echo "trying file $file...\n"; if (is_file($basedir . '/' . $file) && File::contains($string, $regex, $basedir . '/' . $file)) { array_push($res, $basedir . '/' . $file); } //exit; if ($recursive && is_dir($basedir . '/' . $file)) { $new_res = Dir::find_in_files($string, $basedir . '/' . $file, $recursive, $regex); // add $new_res to $res foreach ($new_res as $n) { array_push($res, $n); } } } $dir->close(); return $res; }