【发布时间】:2023-03-13 01:08:02
【问题描述】:
我无法弄清楚为什么我在 PHP 中收到以下错误:
致命错误:无法在第 16 行的 /filename 中使用 DataAccess 类型的对象作为数组。
文件的相关代码如下:
class StandardContext implements IStandardContext
{
private $dataAccess;
// (CON|DE)STRUCTORS
function __construct($config)
{
$this->dataAccess = new DataAccess($config['db']); //this is line 16
}
$config 指的是以下内容:
$config = require(dirname(__FILE__)./*truncated*/.'Config.php');
这里是Config.php的相关代码:
return array(
// Database connection parameters
'db' => array(
'host' => 'localhost',
'name' => 'visum',
'user' => 'root',
'password' => ''
)
);
以下是DataAccess对象的相关代码:
class DataAccess
{
private $link;
private $db;
function __construct($dbConfig)
{
$this->link = mysql_connect( $dbConfig['host'], $dbConfig['user'], $dbConfig['password'] ) or die(mysql_error());
$this->db = $dbConfig['name'];
mysql_select_db($this->db) or die(mysql_error());
}
任何帮助将不胜感激,我对 PHP 还很陌生,完全被难住了。
编辑:顺便说一句,我已经包含了以下代码来测试 StandardContext,它确实有效(即,它允许我对我的数据库进行比我显示的更远的更改)
class StandardContext_index_returns_defined_list implements ITest
{
private $dataAccess;
function __construct($config)
{
$this->dataAccess = new DataAccess($config['db']);
}
【问题讨论】:
-
Doh,做了一个愚蠢的评论,我愚蠢的 iPhone 不让我删除它:)
-
您在实例化 DataAccess 对象之前是否执行了
var_dump($config['db']);以确保它确实是一个数组?查看您的代码,它似乎没问题。唯一缺少的另一件事是您的 Config.php 中return array周围的函数包装器,很高兴看到它的完整图片。 -
奇怪的是,当我用 'var_dump($config['db']);' 替换第 16 行时我继续收到完全相同的错误消息。
-
另外,我没有在 Config.php 上显示的唯一代码是
-
var_dump($config)呢?
标签: php constructor data-access