Я довольно много новичок в 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
Есть несколько вещей, которые вы можете сделать, чтобы избежать этой проблемы в будущем:
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