Почему file_get_contents () возвращает ошибку «Имя файла не может быть пустым»?

Я довольно много новичок в PHP. Мой фон – C / C ++ и C #. Я пытаюсь возразить, ориентируясь на некоторый простой PHP-код, но я делаю что-то неправильно.

Код класса:

class ConnectionString { public $String = ""; public $HostName = ""; public $UserName = ""; public $Password = ""; public $Database = ""; function LoadFromFile($FileName) { $this->String = file_get_contents($Filename); $Values = explode("|", $this->String); $this->HostName = $Values[0]; $this->UserName = $Values[1]; $this->Password = $Values[2]; $this->Database = $Values[3]; } } 

Код звонка:

 $ConnectionString = new ConnectionString(); $FileName = "db.conf"; $ConnectionString->LoadFromFile($FileName); print('<p>Connection Info: ' . $Connection->String . '</p>'); 

Я получаю сообщение об ошибке в строке file_get_contents($Filename) : Filename не может быть пустым . Если я жестко закодирую имя файла вместо $ Filename, я просто получаю все пустые строки для полей.

Какую простую концепцию мне не хватает?

У вас неправильное дело:

 file_get_contents($Filename); 

должно быть

 file_get_contents($FileName); 

Вы должны включить Уведомления, либо в файле php.ini, либо используя error_reporting ()

Переменные в PHP чувствительны к регистру. Вы определили $FileName как параметр LoadFromFile() , но вы использовали $Filename в первой строке этого метода. Дополнительные сведения о переменных PHP:

http://www.php.net/manual/en/language.variables.basics.php

Есть несколько вещей, которые вы можете сделать, чтобы избежать этой проблемы в будущем:

  • Используйте среду IDE, такую ​​как Eclipse PDT , которая поддерживает автоматическое заполнение переменных.
  • Настройте error_reporting для отображения всех типов ошибок ( E_ALL ).

Переменная чувствительность к регистру:

 function LoadFromFile($FileName) { $this->String = file_get_contents($Filename); // This should be $FileName! 
 $this->String = file_get_contents($FileName); 

у вас есть $Filename

  $this->String = file_get_contents($Filename); 

В этой строке вы пишете $ File n ame, когда она должна быть $ File N ame