<?php
interface Configuration{
public function toArray($configFilePath);
}然后新增了3个具体的实现类:
jsonConfiguration.php
<?php
require_once "configuration.php";
class JsonConfiguration implements Configuration{
public function toArray($configFilePath){
return json_decode(file_get_contents($configFilePath), true);
}
}phpConfiguration.php
<?php
require_once "configuration.php";
class phpConfiguration implements Configuration{
public function toArray($configFilePath){
$config = require_once $configFilePath;
return $config;
}
}xmlConfiguration.php
<?php
require_once "configuration.php";
class XmlConfiguration implements Configuration{
public function toArray($configFilePath){
$xml = simplexml_load_file($configFilePath);
return json_decode(json_encode($xml), true);
}
}这样config类中的代码就可以修改为:
public function configToArray(Configuration $configuration){
$config = is_array($configuration->toArray($this->configFilePath)) ? $configuration->toArray($this->configFilePath) : array();
foreach ($config as $key => $value) {
$this->set($key, $value);
}
}