blob: 1909e87c2d00d60cc4db4816bc83a5d1b224d188 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
<?php
/* List groups within an ini file
*
* Usage: php dba_dump <file> [<regex>]
*
* Show all groups in the ini file specified by <file>.
* The regular expression <regex> is used to filter the result.
*
* Note: configure with --enable-dba
*
* (c) Marcus Boerger
*/
require_once("dba_reader.inc");
require_once("key_filter.inc");
/**
* @brief Class to iterate all groups within an ini file.
* @author Marcus Boerger
* @version 1.0
*
* Using this class you can iterator over all groups of a ini file.
*
* This class uses a 'is-a' relation to key_filter in contrast to a 'has-a'
* relation. Doing so both current() and key() methods must be overwritten.
* If it would use a 'has-a' relation there would be much more to type...
* but for puritists that would allow correctness in so far as then no
* key() would be needed.
*/
class ini_groups extends key_filter
{
/**
* Construct an ini file group iterator from a filename.
*
* @param file Ini file to open.
*/
function __construct($file) {
parent::__construct(new dba_reader($file, 'inifile'), '^\[.*\]$');
}
/**
* @return The current group.
*/
function current() {
return substr(parent::key(),1,-1);
}
/**
* @return The current group.
*/
function key() {
return substr(parent::key(),1,-1);
}
}
$it = new ini_groups($argv[1]);
if ($argc>2) {
$it = new key_filter($it, $argv[2]);
}
foreach($it as $group) {
echo "$group\n";
}
?>
|