我正在尝试从xml读取凭据并使用php初始化为私有变量。
<?xml version="1.0" encoding="ISO-8859-1"?>
<config>
<host>localhost</host>
<username>Jani</username>
<password>1234r</password>
</config>
我正在使用以下类和构造函数来初始化变量。
<?php
class Admin {
public $host = "";
private $username;
private $password;
private $table;
private $crendentials = array();
public function __construct() {
$xml = simplexml_load_file("config.xml");
foreach ($this->crendentials as $key => $value) {
if ($key == $this->host) {
$this->host = $value;
} elseif ($key == $this->username) {
$this->username = $value;
} elseif ($key == $this->password) {
$this->password = $value;
}
}
foreach ($xml->children() as $child) {
$this->crendentials[$child->getName()] = $child;
}
}
public function getHost() {
print_r($this->crendentials);
echo $this->host;
echo $this->username;
echo $this->password;
}
}
$obj = new Admin;
$obj->getHost();
?>
它不是初始化变量。除此之外,还有一种加载凭据的好方法吗?我正在创建一个cms。我做了一些像使用ini文件的研究。但我认为xml是最简单的。
答案 0 :(得分:0)
它没有初始化变量。
我看到两个问题:
$this->crendentials
是一个空数组。所以你的第一个foreach
永远不会运行。$xml->children()
的内容来看,第二个foreach
可能什么也没做。除此之外,还有一种加载凭据的好方法吗?
暂且不说你正在从XML文件加载凭据,我建议将两个foreach
循环压缩成一个。只需循环遍历XML密钥并将它们分配给各自的类属性即可。也就是说放弃$this->crendentials
。