hi,
Hello,
Ich mach doch keine Doppelpostings hier.
Und ich möchte keine "anderer Weg Quick Fuck"-Lösung, sondern die Beantwortung der Frage.
- geht, aber so...
- geht, geht nicht, weil ...
OOP bleibt also für die direkte Beantwortung _meiner_ Frage außen vor!
Es steht Dir aber hoffentlich niemand im Wege, wenn Du hier eine komplette Lösung für die Aufgabenstellung in OOP liefern Würdest.
Die hast Du schon selbst geliefert. Muss man doch nur kurz umstellen:
<?php
// ich würde aber file_get_contents und file_put_contents nehmen meine ich ...
class IniHandler {
private $fp;
private $maxdepth;
public function ini_read($fp)
{
if (!$fp) return false;
if (!@flock($fp, LOCK_EX)) return false;
if (false === ($_fstat = @fstat($fp))) return false;
if (false === ($cont = fread($fp, $_fstat['size']))) return false;
if (false === ($_data = @parse_ini_string($cont, true))) return false;
return $_data;
}
private function writeparams($_values, $arraykey, $depth)
{
foreach ($_values as $key => $param)
{
if ($depth >= 1)
{
$arraykeytxt = $arraykey . "[$key]";
}
else
{
$arraykeytxt = $key;
}
if (is_array($param))
{
$depth++;
if ($depth <= $this->maxdepth)
{
writeparams ($param, $arraykeytxt, $depth, $this->fp, $this->maxdepth);
}
}
else
{
fwrite ($this->fp, "$arraykeytxt = '$param'" . PHP_EOL);
}
}
return true;
}
public function ini_write($fp, $_data, $filename, $maxdepth=3)
{
$this->fp = $fp;
$this->maydepth = $this->maxdepth;
$depth = 0;
$arraykey = '';
foreach ($_data as $section => $_value)
{
if (is_array($_value))
{
fwrite ($fp, PHP_EOL . "[$section]" . PHP_EOL);
if ($depth < $this->maxdepth)
{
$this->writeparams ($_value, $_value, $depth);
# writeparams ($_value, $section, $depth, $fp, $this->maxdepth);
}
}
else
{
fwrite ($fp, "$section = '$_value'" . PHP_EOL);
}
}
}
}
macht auch ggfs. Sinn, die nötigen Daten erstmal dem Konstruktor zu übergeben. Vielleicht aber auch nicht ...;
S.a. http://framework.zend.com/apidoc/2.0/classes/Zend.Config.Reader.Ini.html
mfg
tami