本文整理汇总了PHP中DirectoryIterator::valid方法的典型用法代码示例。如果您正苦于以下问题:PHP DirectoryIterator::valid方法的具体用法?PHP DirectoryIterator::valid怎么用?PHP DirectoryIterator::valid使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DirectoryIterator
的用法示例。
在下文中一共展示了DirectoryIterator::valid方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: scanFolder
protected function scanFolder($folder, &$position, $forFolders = true, $threshold_key = 'dir', $threshold_default = 50)
{
$registry = AEFactory::getConfiguration();
// Initialize variables
$arr = array();
$false = false;
if (!is_dir($folder) && !is_dir($folder . '/')) {
return $false;
}
try {
$di = new DirectoryIterator($folder);
} catch (Exception $e) {
$this->setWarning('Unreadable directory ' . $folder);
return $false;
}
if (!$di->valid()) {
$this->setWarning('Unreadable directory ' . $folder);
return $false;
}
if (!empty($position)) {
$di->seek($position);
if ($di->key() != $position) {
$position = null;
return $arr;
}
}
$counter = 0;
$maxCounter = $registry->get("engine.scan.large.{$threshold_key}_threshold", $threshold_default);
while ($di->valid()) {
if ($di->isDot()) {
$di->next();
continue;
}
if ($di->isDir() != $forFolders) {
$di->next();
continue;
}
$ds = $folder == '' || $folder == '/' || @substr($folder, -1) == '/' || @substr($folder, -1) == DIRECTORY_SEPARATOR ? '' : DIRECTORY_SEPARATOR;
$dir = $folder . $ds . $di->getFilename();
$data = _AKEEBA_IS_WINDOWS ? AEUtilFilesystem::TranslateWinPath($dir) : $dir;
if ($data) {
$counter++;
$arr[] = $data;
}
if ($counter == $maxCounter) {
break;
} else {
$di->next();
}
}
// Determine the new value for the position
$di->next();
if ($di->valid()) {
$position = $di->key() - 1;
} else {
$position = null;
}
return $arr;
}
示例2: load
/**
* Carrega todos os arquivos do pacote especificado o carregamento considera o classpath atual da execusão
*
* @param string $package nome do pacote
*/
public static function load($package)
{
self::getCurrentPath();
if (substr($package, -1, 1) != "/") {
$package .= "/";
}
foreach (self::$classPath as $path) {
$dir = $path . $package;
if (is_dir($dir)) {
$d = new DirectoryIterator($dir);
while ($d->valid()) {
if ($d->isFile()) {
$requireThis = false;
//testa a extensão
foreach (self::$filesExtensions as $ext) {
if (substr($d->getFilename(), strlen($ext) * -1, strlen($ext)) == $ext) {
$requireThis = true;
break;
}
}
if ($requireThis) {
require_once $package . $d->getFilename();
}
}
$d->next();
}
}
}
}
示例3: findBy
/**
*
* @param Criterio $filtro
* @param string $order
* @param integer $limitOffset
* @param integer $limitCount
* @param string $group
* @return mixed Proyecto
*/
function findBy($filtro = null, $order = null, $limitOffset = null, $limitCount = null, $group = null)
{
$dir = new DirectoryIterator(DIR_PROYECTOS);
while ($dir->valid()) {
if ($dir->isFile() && stripos($dir->getFilename(), '.json')) {
$proyFilename = DIR_PROYECTOS . $dir->getFilename();
$p = new Proyecto();
$fp = fopen($proyFilename, 'r');
$strJsonProy = fread($fp, filesize($proyFilename));
fclose($fp);
$jsonProy = json_decode($strJsonProy);
$p->setNombre($jsonProy->nombre);
$p->setRuta($jsonProy->ruta);
$p->setTieneProyectoEcplipse(file_exists("{$jsonProy->ruta}/.project"));
if ($p->getTieneProyectoEclipse()) {
$eclipseProy = simplexml_load_file("{$jsonProy->ruta}/.project");
$p->setNombre((string) $eclipseProy->name);
}
$p->setId($jsonProy->id);
$p->setDbConfig($jsonProy->dbConfig);
$lista[] = $p;
}
$dir->next();
}
return $lista;
}
示例4: loadMigrations
public function loadMigrations()
{
$result = array('mgrs' => array(), 'headers' => array(array('id' => 'id', 'content' => Loc::getMessage('MIGRATION_ID'), 'sort' => 'id', 'align' => 'left', 'default' => true), array('id' => 'status', 'content' => Loc::getMessage('MIGRATION_STATUS'), 'align' => 'right', 'default' => true), array('id' => 'date_c', 'content' => Loc::getMessage('MIGRATION_DATE_CHANGED'), 'align' => 'right', 'default' => true), array('id' => 'date_a', 'content' => Loc::getMessage('MIGRATION_DATE_ADDED'), 'align' => 'right', 'default' => true)));
$db_mgrs = $this->loadDBMigrations();
$mgr_path = Option::get(UM_BM_MODULE_NAME, 'migration_folder', UM_BM_MGR_PATH);
$di = new \DirectoryIterator($_SERVER['DOCUMENT_ROOT'] . $mgr_path);
while ($di->valid()) {
if (!$di->isDot() && $this->hasProperFilename($di->getFilename())) {
$filename = $di->getFilename();
if (!array_key_exists($filename, $db_mgrs)) {
$mgr = new BixMigBase();
$mgr->setCode($filename)->setStatus('UNKNOWN')->setAddDate(date('d.m.Y H:i:s'))->setChangeDate()->add();
$result['mgrs'][] = $mgr;
} else {
$result['mgrs'][] = $db_mgrs[$filename];
unset($db_mgrs[$filename]);
}
}
$di->next();
}
if (!empty($db_mgrs)) {
$this->deleteOrphans($db_mgrs);
}
return $result;
}
示例5: logAction
public function logAction()
{
$pageSize = 4096;
$overlapSize = 128;
$dir = APPLICATION_PATH . '/../data/logs/';
$file = $this->_getParam('file', null);
$this->view->page = $this->_getParam('page', 0);
if ($file === null) {
$file = sprintf('%s_application.log', Zend_Date::now()->toString('yyyy.MM.dd'));
}
$fp = fopen($dir . $file, 'r');
fseek($fp, -$pageSize * ($this->view->page + 1) + $overlapSize, SEEK_END);
$this->view->errorLog = fread($fp, $pageSize + $overlapSize * 2);
fclose($fp);
$iterator = new DirectoryIterator($dir);
while ($iterator->valid()) {
if (!$iterator->isDot()) {
if ($iterator->isFile()) {
$files[$iterator->getFilename()] = $iterator->getPathName();
}
}
$iterator->next();
}
$this->view->itemCountPerPage = $pageSize;
$this->view->totalItemCount = filesize($dir . $file);
$this->view->files = $files;
}
示例6: getImgArray
/**
* Obtem um array de ImgObject com todos os arquivos de imagens dos
* diretórios especificados
*
* @param int|null $limit
* @return array
*/
public function getImgArray($limit = null)
{
$imgArray = array();
foreach ($this->getDir() as $diretorio) {
$imgArray = array();
$d = new DirectoryIterator($diretorio);
while ($d->valid()) {
if (!$d->isDot()) {
$fileName = $d->getFilename();
if ($this->validateFormat($fileName)) {
$imgObj = new ImgObject($fileName, $diretorio);
$imgArray[] = $imgObj;
++$this->imgCount;
if ($limit != null) {
if ($this->imgCount >= $limit) {
break;
}
}
}
}
$d->next();
}
}
return $imgArray;
}
示例7: fromFileScan
/**
* @ignore
*/
public static function fromFileScan($uPattern)
{
$tSep = quotemeta(DIRECTORY_SEPARATOR);
$tPos = strrpos($uPattern, $tSep);
if ($tSep !== '/' && $tPos === false) {
$tSep = '/';
$tPos = strrpos($uPattern, $tSep);
}
if ($tPos !== false) {
$tPattern = substr($uPattern, $tPos + strlen($tSep));
$tPath = substr($uPattern, 0, $tPos + strlen($tSep));
} else {
$tPath = $uPattern;
$tPattern = "";
}
$tTemp = new static();
$tHandle = new \DirectoryIterator($tPath);
$tPatExists = strlen($uPattern) > 0;
for (; $tHandle->valid(); $tHandle->next()) {
if (!$tHandle->isFile()) {
continue;
}
$tFile = $tHandle->current();
if ($tPatExists && !fnmatch($tPattern, $tFile)) {
continue;
}
$tTemp->add(simplexml_load_file($tPath . $tFile));
}
return $tTemp;
}
示例8: executeDir
function executeDir($directory)
{
$iterator = new DirectoryIterator($directory);
while ($iterator->valid()) {
$entry = $iterator->getFilename();
$path = $directory . '/' . $entry;
$iterator->next();
if ($entry[0] == '.') {
continue;
}
if (is_file($path)) {
if (substr($entry, -4) != '.php') {
continue;
}
if (ctype_upper($entry[0])) {
$test = new DocTest($path);
if ($test->failed()) {
echo $test->toString();
$this->fail('Doc test failed.');
} else {
if ($test->numOfPassed()) {
echo ',';
} else {
echo ' ';
}
}
}
} elseif (is_dir($path)) {
$this->executeDir($path);
}
}
}
示例9: searchInDir
/**
* Método recursivo que busca o arquivo em todas as pastadas dentro do
* diretorio específicado
*
* @param string $dir
* @param string $file
* @return boolean
*/
public static function searchInDir($dir, $file)
{
if (is_file($dir . "/" . $file)) {
require_once $dir . "/" . $file;
self::$find = true;
if (self::$sugests) {
$fileName = $dir . "/" . $file;
$fileName = str_replace(self::$currentPath, "", $fileName);
echo "require_once '" . $fileName . "';<br>\n";
}
return true;
}
if (is_dir($dir)) {
$d = new DirectoryIterator($dir);
while (!self::$find && $d->valid()) {
if (is_dir($d->getPath() . '/' . $d->getFilename())) {
//testa se o arquivo pode ser incluido
$inc = true;
foreach (self::$blockedDirs as $bDir) {
if ($d->getFilename() == $bDir) {
$inc = false;
break;
}
}
if (!$d->isDot() && $inc) {
self::searchInDir($d->getPath() . '/' . $d->getFilename(), $file);
}
}
$d->next();
}
}
return self::$find;
}
示例10: execute
/**
* @see sfTask
*/
protected function execute($arguments = array(), $options = array())
{
$this->checkORMType($options['type']);
parent::execute($arguments, $options);
$this->_runInitTask();
$options['application'] = $arguments['application'];
// still no class_path given? take the default one!
if (empty($options['class_path'])) {
$options['class_path'] = $this->modelTypes[$options['type']]['default_model_path'];
}
if (!empty($options['skip_methods'])) {
$methods = explode(',', $options['skip_methods']);
foreach ($methods as $method) {
array_push($this->skipMethods, $method);
}
}
// a custom class given?
if (!empty($options['class'])) {
if (strpos($options['class_path'], ':') !== false) {
throw new sfCommandException(': is not supported in class_path when specifying the class name.');
}
$options['libpath'] = $options['class_path'];
$this->createTestClass($options, $options['target']);
return;
}
$paths = explode(':', $options['class_path']);
$namespaces = array();
foreach ($paths as $path) {
$finder = sfFinder::type('directory');
$ignoredDirs = $this->modelTypes[$options['type']]['ignored_directory'];
foreach ($ignoredDirs as $ignDir) {
$finder = $finder->not_name($ignDir);
}
$dirs = $finder->in($path);
foreach ($dirs as $dir) {
if (is_dir($dir)) {
$namespaces[] = $dir;
}
}
}
$paths = array_merge($paths, $namespaces);
foreach ($paths as $path) {
$options['libpath'] = $path;
$dir = new DirectoryIterator($path);
$this->logSection('phpunit', sprintf('Searching %s', $path));
while ($dir->valid()) {
if (strpos($dir, '.php') !== false) {
$subfolder = basename(dirname($path . DIRECTORY_SEPARATOR . $dir));
$suffix = !empty($options['file_suffix']) ? $options['file_suffix'] : $this->modelTypes[$options['type']]['classFileSuffix'];
$options['class'] = str_replace($suffix, '', $dir);
$this->createTestClass($options, $subfolder);
}
$dir->next();
}
}
$this->_runInitTask();
}
示例11: valid
public function valid()
{
if (!parent::valid()) {
return false;
}
if (!$this->_apb) {
return true;
}
return $this->isAllowed();
}
示例12: cleanDir
protected function cleanDir($dir)
{
$files = new \DirectoryIterator($dir);
while ($files->valid()) {
if (in_array(substr($files->current(), -2), ['.0', '.1'])) {
unlink($dir . '/' . $files->current());
}
$files->next();
}
}
示例13: rewind
/**
* Rewinds the cache entry iterator to the first element
*
* @return void
* @api
*/
public function rewind()
{
if ($this->cacheFilesIterator === null) {
$this->cacheFilesIterator = new \DirectoryIterator($this->cacheDirectory);
}
$this->cacheFilesIterator->rewind();
while (substr($this->cacheFilesIterator->getFilename(), 0, 1) === '.' && $this->cacheFilesIterator->valid()) {
$this->cacheFilesIterator->next();
}
}
示例14: valid
public function valid()
{
if (parent::valid()) {
if (!parent::isFile()) {
parent::next();
return $this->valid();
}
return True;
}
return False;
}
示例15: valid
/**
* valid
*
* @access public
* @return bool
*/
public function valid()
{
if (parent::valid()) {
if (parent::isDir()) {
parent::next();
return $this->valid();
}
return true;
}
return false;
}