Traversing files and directories: Difference between revisions
Appearance
m AtkDirectoryTraverser moved to Traversing files and directories |
No edit summary |
||
| Line 8: | Line 8: | ||
'''Example''' where directory traverser is used to find all localization files in the temporary directory: | '''Example''' where directory traverser is used to find all localization files in the temporary directory: | ||
<syntaxhighlight lang="php"> | |||
class localefinder | class localefinder | ||
{ | { | ||
| Line 29: | Line 30: | ||
} | } | ||
} | } | ||
// Initialise objects | // Initialise objects | ||
$traverser = &atknew('atk.utils.atkdirectorytraverser'); | $traverser = &atknew('atk.utils.atkdirectorytraverser'); | ||
| Line 37: | Line 39: | ||
// Get all the found files | // Get all the found files | ||
$locales = $localefinder->getLocales(); | $locales = $localefinder->getLocales(); | ||
</syntaxhighlight> | |||
Revision as of 16:24, 14 January 2007
|
ATK Howto: Traversing files and directories
|
The atkDirectoryTraverser can be used to recursively traverse a directory structure.
For each directory or file encountered, it calls callback methods on one or more callbackobjects.
This is similar to the unix 'find' command with an execute option.
You pass a callbackobject that performs the actual action. The full pathname of the file is passed as a parameter to the callback method.
Example where directory traverser is used to find all localization files in the temporary directory:
class localefinder
{
var $m_locales = array();
function visitFile($file)
{
$exploded = explode('/',$file);
$filename = array_pop($exploded);
$filepath = implode('/',$exploded).'/';
if (substr($filename,0,strlen('localization_'))==='localization_' && substr($filename,-5)==='.conf')
{
$this->m_locales[] = $file;
}
}
function getLocales()
{
return $this->m_locales;
}
}
// Initialise objects
$traverser = &atknew('atk.utils.atkdirectorytraverser');
$localefinder = new localefinder();
$traverser->addCallbackObject($localefinder);
// Traverse the temporary directory
$traverser->traverse(atkconfig('atktempdir'));
// Get all the found files
$locales = $localefinder->getLocales();