Сама задается переменная PHP
Я тут пишу в отдельном файле код для работы с ini и отдельно все работает. Когда я положил в свой проект, то почему-то переменная $ini в функции Open null, а в AddSection уже такая:
object(WriteIni)#2 (2) {
["Path":"WriteIni":private]=>
NULL
["File":"WriteIni":private]=>
NULL
}
object(WriteIni)#2 (2) {
["Path":"WriteIni":private]=>
NULL
["File":"WriteIni":private]=>
NULL
}
Почему так выходит? Вот весь код в файле с ошибкой:
<?php
class WriteIni {
private $Path;
private $File;
public function Open($path)
{
global $Path, $ini;
$Path = $path;
}
public function AddSection($section)
{
echo "<pre>";
var_dump($GLOBALS["ini"]);
echo "</pre>";
global $ini;
echo "<pre>";
var_dump($GLOBALS["ini"]);
echo "</pre>";
if (!isset($ini))
{
$this->GetIni();
}
if (!isset($ini[$section]))
{
$ini[$section] = array();
}
}
public function AddVar($section, $name, $value)
{
global $Path, $ini;
if (!isset($ini))
{
$ini = $this->GetIni();
}
$ini[$section][$name] = $value;
//$this->Write_Create($ini);
}
public function Save()
{
$this->Write_Create($GLOBALS["ini"]);
}
public function Close()
{
$GLOBALS["Path"] = null;
$GLOBALS["ini"] = null;
}
function GetIni()
{
global $Path, $ini;
if (file_exists($Path))
{
$ini = parse_ini_file($Path, true);
if (!isset($ini)) {
$ini = array();
}
unlink($Path);
}
else {
$ini = array();
}
}
function Write_Create($ini)
{
global $Path;
$File = fopen($Path, "w");
foreach ($ini as $key => $section)
{
fwrite($File, "['".$key."']\n");
foreach ($section as $vkey => $value)
{
fwrite($File, "\t'".$vkey."'='".$value."';\n");
}
}
fclose($File);
}
}
?>
Подключается и используется он в другом файле так:
require_once "../../ReactData/ReactPHP/ini.php";
$ini = new WriteIni();
$ini->Open("../../protected/react-config.ini");
$ini->AddSection("Server");
$ini->AddVar("Server", "Host", $host);
$ini->AddVar("Server", "User", $name);
$ini->AddVar("Server", "Password", $pasw);
$ini->AddVar("Server", "DB", $db);
$ini->AddVar("Server", "Prefix", $prefix);
$ini->Save();
$ini->Close();
Ответы (1 шт):
Автор решения: Daniil Screpchenko
→ Ссылка
Разобрался по 1 комментарию, я подумал, и посмотрел, что переменная внутри вызывающего файла такая же как и в файле с классом - $ini. Подтвердилось это тем что когда я изменил название - все заработало. Далее в классе я заменил все переменные $ini с global на $this->ini, что бы оно принадлежало исключительно экземпляру класса. После этого все заработало.