当前位置: 首页>>代码示例>>PHP>>正文


PHP RecursiveIteratorIterator::getInnerIterator方法代码示例

本文整理汇总了PHP中RecursiveIteratorIterator::getInnerIterator方法的典型用法代码示例。如果您正苦于以下问题:PHP RecursiveIteratorIterator::getInnerIterator方法的具体用法?PHP RecursiveIteratorIterator::getInnerIterator怎么用?PHP RecursiveIteratorIterator::getInnerIterator使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在RecursiveIteratorIterator的用法示例。


在下文中一共展示了RecursiveIteratorIterator::getInnerIterator方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: main

 /**
  * Executes this task.
  */
 public function main()
 {
     if ($this->path === null) {
         throw new BuildException('The path attribute must be specified');
     }
     $check = new AgaviModuleFilesystemCheck();
     $check->setConfigDirectory($this->project->getProperty('module.config.directory'));
     $check->setPath($this->path->getAbsolutePath());
     if (!$check->check()) {
         throw new BuildException('The path attribute must be a valid module base directory');
     }
     /* We don't know whether the module is configured or not here, so load the
      * values we want properly. */
     $this->tryLoadAgavi();
     $this->tryBootstrapAgavi();
     require_once AgaviConfigCache::checkConfig(sprintf('%s/%s/module.xml', $this->path->getAbsolutePath(), (string) $this->project->getProperty('module.config.directory')));
     $actionPath = AgaviToolkit::expandVariables(AgaviToolkit::expandDirectives(AgaviConfig::get(sprintf('modules.%s.agavi.action.path', strtolower($this->path->getName())), '%core.module_dir%/${moduleName}/actions/${actionName}Action.class.php')), array('moduleName' => $this->path->getName()));
     $pattern = '#^' . AgaviToolkit::expandVariables(str_replace('\\$\\{actionName\\}', '${actionName}', preg_quote($actionPath, '#')), array('actionName' => '(?P<action_name>.*?)')) . '$#';
     $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->path->getAbsolutePath()));
     for (; $iterator->valid(); $iterator->next()) {
         $rdi = $iterator->getInnerIterator();
         if ($rdi->isDot() || !$rdi->isFile()) {
             continue;
         }
         $file = $rdi->getPathname();
         if (preg_match($pattern, $file, $matches)) {
             $this->log(str_replace(DIRECTORY_SEPARATOR, '.', $matches['action_name']));
         }
     }
 }
开发者ID:horros,项目名称:agavi,代码行数:33,代码来源:AgaviDisplayactionsTask.php

示例2: main

 /**
  * Executes this task.
  */
 public function main()
 {
     if ($this->property === null) {
         throw new BuildException('The property attribute must be specified');
     }
     if ($this->path === null) {
         throw new BuildException('The path attribute must be specified');
     }
     $check = new AgaviModuleFilesystemCheck();
     $check->setConfigDirectory($this->project->getProperty('module.directory.config'));
     $check->setPath($this->path->getAbsolutePath());
     if (!$check->check()) {
         throw new BuildException('The path attribute must be a valid module base directory');
     }
     $actions = array();
     $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->path->getAbsolutePath() . DIRECTORY_SEPARATOR . $this->project->getProperty('module.directory.actions')));
     for (; $iterator->valid(); $iterator->next()) {
         $rdi = $iterator->getInnerIterator();
         if ($rdi->isDot() || !$rdi->isFile()) {
             continue;
         }
         $file = $rdi->getSubpathname();
         if (preg_match('#Action\\.class\\.php$#', $file)) {
             $actions[] = str_replace(DIRECTORY_SEPARATOR, '.', substr($file, 0, -16));
         }
     }
     $list = new AgaviArraytostringTransform();
     $list->setInput($actions);
     $list->setDelimiter(' ');
     $this->project->setUserProperty($this->property, $list->transform());
 }
开发者ID:philippjenni,项目名称:icinga-web,代码行数:34,代码来源:AgaviListactionsTask.php

示例3: suite

 public static function suite()
 {
     $suite = new PHPUnit_Framework_TestSuite('Test Suite');
     $it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(dirname(__FILE__) . '/Test'));
     for ($it->rewind(); $it->valid(); $it->next()) {
         // Something like: Test\Application\Modules\Main\Controllers\Index.php
         $path = "Test\\" . $it->getInnerIterator()->getSubPathname();
         // Replace all of the \ with _
         $className = str_replace('\\', "_", $path);
         // Take off the extension
         $className = substr($className, 0, -4);
         require_once $path;
         $suite->addTestSuite($className);
     }
     return $suite;
 }
开发者ID:TheSavior,项目名称:WhiteBoard,代码行数:16,代码来源:AllTests.php

示例4: array

<?php

$data = array(1 => 'val1', array(2 => 'val2', array(3 => 'val3')), 4 => 'val4');
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($data));
foreach ($iterator as $foo) {
    $key = $iterator->key();
    echo "update {$key}\n";
    var_dump($iterator->getInnerIterator());
    $iterator->offsetSet($key, 'alter');
    var_dump($iterator->getInnerIterator());
}
$copy = $iterator->getArrayCopy();
var_dump($copy);
开发者ID:badlamer,项目名称:hhvm,代码行数:13,代码来源:bug42654.php

示例5: get_recursive_file_list

 /**
  * Returns a list of files in $dir
  *
  * @return	array	List of files (including the path)
  */
 public function get_recursive_file_list()
 {
     try {
         $iterator = new \RecursiveIteratorIterator(new \phpbb\event\recursive_event_filter_iterator(new \RecursiveDirectoryIterator($this->path, \FilesystemIterator::SKIP_DOTS), $this->path), \RecursiveIteratorIterator::LEAVES_ONLY);
     } catch (\Exception $e) {
         return array();
     }
     $files = array();
     foreach ($iterator as $file_info) {
         /** @var \RecursiveDirectoryIterator $file_info */
         $relative_path = $iterator->getInnerIterator()->getSubPathname();
         $files[] = str_replace(DIRECTORY_SEPARATOR, '/', $relative_path);
     }
     return $files;
 }
开发者ID:Voxel37,项目名称:phpbb,代码行数:20,代码来源:php_exporter.php

示例6: all_available

 /**
  * Retrieves a list of all available extensions on the filesystem
  *
  * @return array An array with extension names as keys and paths to the
  *               extension as values
  */
 public function all_available()
 {
     $available = array();
     if (!is_dir($this->phpbb_root_path . 'ext/')) {
         return $available;
     }
     $iterator = new \RecursiveIteratorIterator(new \phpbb\recursive_dot_prefix_filter_iterator(new \RecursiveDirectoryIterator($this->phpbb_root_path . 'ext/', \FilesystemIterator::NEW_CURRENT_AND_KEY | \FilesystemIterator::FOLLOW_SYMLINKS)), \RecursiveIteratorIterator::SELF_FIRST);
     $iterator->setMaxDepth(2);
     foreach ($iterator as $file_info) {
         if ($file_info->isFile() && $file_info->getFilename() == 'composer.json') {
             $ext_name = $iterator->getInnerIterator()->getSubPath();
             $composer_file = $iterator->getPath() . '/composer.json';
             // Ignore the extension if there is no composer.json.
             if (!is_readable($composer_file) || !($ext_info = file_get_contents($composer_file))) {
                 continue;
             }
             $ext_info = json_decode($ext_info, true);
             $ext_name = str_replace(DIRECTORY_SEPARATOR, '/', $ext_name);
             // Ignore the extension if directory depth is not correct or if the directory structure
             // does not match the name value specified in composer.json.
             if (substr_count($ext_name, '/') !== 1 || !isset($ext_info['name']) || $ext_name != $ext_info['name']) {
                 continue;
             }
             $available[$ext_name] = $this->phpbb_root_path . 'ext/' . $ext_name . '/';
         }
     }
     ksort($available);
     return $available;
 }
开发者ID:Tarendai,项目名称:spring-website,代码行数:35,代码来源:manager.php

示例7: array

<?php

$ar = array(1, 2, array(31, 32, array(331)), 4);
$it = new RecursiveArrayIterator($ar);
$it = new RecursiveCachingIterator($it);
$it = new RecursiveIteratorIterator($it);
foreach ($it as $k => $v) {
    echo "{$k}=>{$v}\n";
    echo "hasNext: " . ($it->getInnerIterator()->hasNext() ? "yes" : "no") . "\n";
}
?>
===DONE===
开发者ID:gleamingthecube,项目名称:php,代码行数:12,代码来源:ext_spl_tests_iterator_026.php

示例8: main

    function main($id, $mode)
    {
        global $config, $db, $user, $template, $phpbb_log, $phpbb_container;
        global $phpbb_root_path, $phpEx, $request;
        if (!function_exists('validate_language_iso_name')) {
            include $phpbb_root_path . 'includes/functions_user.' . $phpEx;
        }
        // Check and set some common vars
        $action = isset($_POST['update_details']) ? 'update_details' : '';
        $action = isset($_POST['remove_store']) ? 'details' : $action;
        $submit = empty($action) && !isset($_POST['update']) && !isset($_POST['test_connection']) ? false : true;
        $action = empty($action) ? $request->variable('action', '') : $action;
        $form_name = 'acp_lang';
        add_form_key('acp_lang');
        $lang_id = $request->variable('id', 0);
        $selected_lang_file = $request->variable('language_file', '|common.' . $phpEx);
        list($this->language_directory, $this->language_file) = explode('|', $selected_lang_file);
        $this->language_directory = basename($this->language_directory);
        $this->language_file = basename($this->language_file);
        $user->add_lang('acp/language');
        $this->tpl_name = 'acp_language';
        $this->page_title = 'ACP_LANGUAGE_PACKS';
        switch ($action) {
            case 'update_details':
                if (!$submit || !check_form_key($form_name)) {
                    trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
                }
                if (!$lang_id) {
                    trigger_error($user->lang['NO_LANG_ID'] . adm_back_link($this->u_action), E_USER_WARNING);
                }
                $sql = 'SELECT *
					FROM ' . LANG_TABLE . "\n\t\t\t\t\tWHERE lang_id = {$lang_id}";
                $result = $db->sql_query($sql);
                $row = $db->sql_fetchrow($result);
                $db->sql_freeresult($result);
                $sql_ary = array('lang_english_name' => $request->variable('lang_english_name', $row['lang_english_name']), 'lang_local_name' => $request->variable('lang_local_name', $row['lang_local_name'], true), 'lang_author' => $request->variable('lang_author', $row['lang_author'], true));
                $db->sql_query('UPDATE ' . LANG_TABLE . '
					SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
					WHERE lang_id = ' . $lang_id);
                $phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_LANGUAGE_PACK_UPDATED', false, array($sql_ary['lang_english_name']));
                trigger_error($user->lang['LANGUAGE_DETAILS_UPDATED'] . adm_back_link($this->u_action));
                break;
            case 'details':
                if (!$lang_id) {
                    trigger_error($user->lang['NO_LANG_ID'] . adm_back_link($this->u_action), E_USER_WARNING);
                }
                $this->page_title = 'LANGUAGE_PACK_DETAILS';
                $sql = 'SELECT *
					FROM ' . LANG_TABLE . '
					WHERE lang_id = ' . $lang_id;
                $result = $db->sql_query($sql);
                $lang_entries = $db->sql_fetchrow($result);
                $db->sql_freeresult($result);
                if (!$lang_entries) {
                    trigger_error($user->lang['LANGUAGE_PACK_NOT_EXIST'] . adm_back_link($this->u_action), E_USER_WARNING);
                }
                $lang_iso = $lang_entries['lang_iso'];
                $template->assign_vars(array('S_DETAILS' => true, 'U_ACTION' => $this->u_action . "&amp;action=details&amp;id={$lang_id}", 'U_BACK' => $this->u_action, 'LANG_LOCAL_NAME' => $lang_entries['lang_local_name'], 'LANG_ENGLISH_NAME' => $lang_entries['lang_english_name'], 'LANG_ISO' => $lang_iso, 'LANG_AUTHOR' => $lang_entries['lang_author'], 'L_MISSING_FILES' => $user->lang('THOSE_MISSING_LANG_FILES', $lang_entries['lang_local_name']), 'L_MISSING_VARS_EXPLAIN' => $user->lang('THOSE_MISSING_LANG_VARIABLES', $lang_entries['lang_local_name'])));
                // If current lang is different from the default lang, then highlight missing files and variables
                if ($lang_iso != $config['default_lang']) {
                    try {
                        $iterator = new \RecursiveIteratorIterator(new \phpbb\recursive_dot_prefix_filter_iterator(new \RecursiveDirectoryIterator($phpbb_root_path . 'language/' . $config['default_lang'] . '/', \FilesystemIterator::SKIP_DOTS)), \RecursiveIteratorIterator::LEAVES_ONLY);
                    } catch (\Exception $e) {
                        return array();
                    }
                    foreach ($iterator as $file_info) {
                        /** @var \RecursiveDirectoryIterator $file_info */
                        $relative_path = $iterator->getInnerIterator()->getSubPathname();
                        $relative_path = str_replace(DIRECTORY_SEPARATOR, '/', $relative_path);
                        if (file_exists($phpbb_root_path . 'language/' . $lang_iso . '/' . $relative_path)) {
                            if (substr($relative_path, 0 - strlen($phpEx)) === $phpEx) {
                                $missing_vars = $this->compare_language_files($config['default_lang'], $lang_iso, $relative_path);
                                if (!empty($missing_vars)) {
                                    $template->assign_block_vars('missing_varfile', array('FILE_NAME' => $relative_path));
                                    foreach ($missing_vars as $var) {
                                        $template->assign_block_vars('missing_varfile.variable', array('VAR_NAME' => $var));
                                    }
                                }
                            }
                        } else {
                            $template->assign_block_vars('missing_files', array('FILE_NAME' => $relative_path));
                        }
                    }
                }
                return;
                break;
            case 'delete':
                if (!$lang_id) {
                    trigger_error($user->lang['NO_LANG_ID'] . adm_back_link($this->u_action), E_USER_WARNING);
                }
                $sql = 'SELECT *
					FROM ' . LANG_TABLE . '
					WHERE lang_id = ' . $lang_id;
                $result = $db->sql_query($sql);
                $row = $db->sql_fetchrow($result);
                $db->sql_freeresult($result);
                if ($row['lang_iso'] == $config['default_lang']) {
                    trigger_error($user->lang['NO_REMOVE_DEFAULT_LANG'] . adm_back_link($this->u_action), E_USER_WARNING);
                }
                if (confirm_box(true)) {
//.........这里部分代码省略.........
开发者ID:MrAdder,项目名称:phpbb,代码行数:101,代码来源:acp_language.php

示例9: find_from_paths

 /**
  * Finds all file system entries matching the configured options from
  * an array of paths
  *
  * @param array $extensions Array of extensions (name => full relative path)
  * @param bool $cache Whether the result should be cached
  * @param bool $is_dir Directories will be returned when true, only files
  *                     otherwise
  * @return array An array of paths to found items
  */
 public function find_from_paths($extensions, $cache = true, $is_dir = false)
 {
     $this->query['is_dir'] = $is_dir;
     $query = md5(serialize($this->query) . serialize($extensions));
     if (!defined('DEBUG') && $cache && isset($this->cached_queries[$query])) {
         return $this->cached_queries[$query];
     }
     $files = array();
     foreach ($extensions as $name => $path) {
         $ext_name = $name;
         if (!file_exists($path)) {
             continue;
         }
         if ($name === '/') {
             $location = $this->query['core_path'];
             $name = '';
             $suffix = $this->query['core_suffix'];
             $prefix = $this->query['core_prefix'];
             $directory = $this->query['core_directory'];
         } else {
             $location = 'ext/';
             $name .= '/';
             $suffix = $this->query['extension_suffix'];
             $prefix = $this->query['extension_prefix'];
             $directory = $this->query['extension_directory'];
         }
         // match only first directory if leading slash is given
         if ($directory === '/') {
             $directory_pattern = '^' . preg_quote(DIRECTORY_SEPARATOR, '#');
         } else {
             if ($directory && $directory[0] === '/') {
                 if (!$is_dir) {
                     $path .= substr($directory, 1);
                 }
                 $directory_pattern = '^' . preg_quote(str_replace('/', DIRECTORY_SEPARATOR, $directory) . DIRECTORY_SEPARATOR, '#');
             } else {
                 $directory_pattern = preg_quote(DIRECTORY_SEPARATOR . str_replace('/', DIRECTORY_SEPARATOR, $directory) . DIRECTORY_SEPARATOR, '#');
             }
         }
         if ($is_dir) {
             $directory_pattern .= '$';
         }
         $directory_pattern = '#' . $directory_pattern . '#';
         if (is_dir($path)) {
             $iterator = new \RecursiveIteratorIterator(new \phpbb\recursive_dot_prefix_filter_iterator(new \RecursiveDirectoryIterator($path, \FilesystemIterator::SKIP_DOTS)), \RecursiveIteratorIterator::SELF_FIRST);
             foreach ($iterator as $file_info) {
                 $filename = $file_info->getFilename();
                 if ($file_info->isDir() == $is_dir) {
                     if ($is_dir) {
                         $relative_path = $iterator->getInnerIterator()->getSubPath() . DIRECTORY_SEPARATOR . basename($filename) . DIRECTORY_SEPARATOR;
                         if ($relative_path[0] !== DIRECTORY_SEPARATOR) {
                             $relative_path = DIRECTORY_SEPARATOR . $relative_path;
                         }
                     } else {
                         $relative_path = $iterator->getInnerIterator()->getSubPathname();
                         if ($directory && $directory[0] === '/') {
                             $relative_path = str_replace('/', DIRECTORY_SEPARATOR, $directory) . DIRECTORY_SEPARATOR . $relative_path;
                         } else {
                             $relative_path = DIRECTORY_SEPARATOR . $relative_path;
                         }
                     }
                     if ((!$suffix || substr($relative_path, -strlen($suffix)) === $suffix) && (!$prefix || substr($filename, 0, strlen($prefix)) === $prefix) && (!$directory || preg_match($directory_pattern, $relative_path))) {
                         $files[] = array('named_path' => str_replace(DIRECTORY_SEPARATOR, '/', $location . $name . substr($relative_path, 1)), 'ext_name' => $ext_name, 'path' => str_replace(array(DIRECTORY_SEPARATOR, $this->phpbb_root_path), array('/', ''), $file_info->getPath()) . '/', 'filename' => $filename);
                     }
                 }
             }
         }
     }
     if ($cache && $this->cache) {
         $this->cached_queries[$query] = $files;
         $this->cache->put($this->cache_name, $this->cached_queries);
     }
     return $files;
 }
开发者ID:MrAdder,项目名称:phpbb,代码行数:84,代码来源:finder.php

示例10: dirname

$demoModpubPath = dirname(__FILE__) . '/demo/pub/modpub';
# Dev
$modpubPath = dirname(__FILE__) . '/modpub';
# Remove all files and directories from demo
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($demoModpubPath), RecursiveIteratorIterator::CHILD_FIRST);
for (; $iterator->valid(); $iterator->next()) {
    $rdi = $iterator->getInnerIterator();
    if (strpos($rdi->getSubpathname(), '.svn') !== false || $iterator->isDot()) {
        continue;
    }
    if ($rdi->isFile()) {
        unlink($rdi->getPathname());
    } else {
        rmdir($rdi->getPathname());
    }
}
# Create our ADT dir in modpub :)
mkdir($demoModpubPath . '/Adt');
# Copy and paste all needed files from dev to demo
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($modpubPath), RecursiveIteratorIterator::SELF_FIRST);
for (; $iterator->valid(); $iterator->next()) {
    $rdi = $iterator->getInnerIterator();
    if (strpos($rdi->getSubpathname(), '.svn') !== false || $iterator->isDot()) {
        continue;
    }
    if ($rdi->isDir()) {
        mkdir($demoModpubPath . '/Adt/' . $rdi->getSubPathname());
    } else {
        copy($rdi->getPathname(), $demoModpubPath . '/Adt/' . $rdi->getSubPathname());
    }
}
开发者ID:nnarhinen,项目名称:AgaviDebugTools,代码行数:31,代码来源:sync-modpub.php


注:本文中的RecursiveIteratorIterator::getInnerIterator方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。