【发布时间】:2019-12-01 04:39:51
【问题描述】:
我正在运行抛出错误的函数:
不能将对象 Coalition/ConfigRepository 类型作为数组使用
为了解决我需要更改扩展类'ConfigRepository'
<?php
use Coalition\ConfigRepository;
class ConfigRepositoryTest extends PHPUnit_Framework_TestCase
public function test_array_access_set()
{
$config = new ConfigRepository;
$config['foo'] = 'bar'; //throw error here
$this->assertTrue(isset($config['foo']));
$this->assertEquals('bar', $config['foo']);
}
}
public function test_array_access_unset()
{
$config = new ConfigRepository(['foo' => 'bar']);
unset($config['foo']);
$this->assertFalse($config->has('foo'));
}
扩展类是我必须改变的地方
namespace Coalition;
class ConfigRepository
{
private $key=[];
/**
* ConfigRepository Constructor
*/
public function __construct($key = null)
{
$this->key = $key;
}
public function has($key)
{
if(!$this->key) return false;
return array_key_exists($key,$this->key);
}
}
我该如何解决?
也许问题出在__construct 我必须传递数组值的地方?
【问题讨论】:
-
错误很明显 - 对象不是数组。你想达到什么目标?你想让 ConfigRepository 保存关联数组吗?如果
$key是私有的,你至少应该有get方法(如果没有设置/附加) -
我想解决这个错误,因为我必须在下面的类中更改,值应该是数组,请通过更改类配置存储库更新答案