本文整理汇总了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']));
}
}
}
示例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());
}
示例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;
}
示例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);
示例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;
}
示例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;
}
示例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===
示例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 . "&action=details&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)) {
//.........这里部分代码省略.........
示例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;
}
示例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());
}
}