php访问类属性数组,错误不是数组

时间:2016-10-01 00:54:55

标签: php arrays oop

尝试获取数组中的值,但返回错误:

  

警告:为foreach()提供的参数无效

以及使用array_key_exists()时:

  

警告:array_key_exists()期望参数2为数组

为什么属性数组$credentials在这里不被识别为数组?

class Config {
   private $credentials = array(
        'host' => 'localhost',
        'dbname' => 'testdb',
        'user' => 'username',
        'pass' => 'password'
    );

    public static function get($credential) {

        if(array_key_exists($credential, $credentials)) {

            foreach($credentials as $key => $value) {

                if($key === $credential) {
                    return $credentials[$key];
                }
            }
            return false;
        } else { 
            echo 'Credential does not exist.'; 
        }
    }
}


$test = new Config();

echo $test->get('host');

1 个答案:

答案 0 :(得分:1)

private $credentials 

声明一个实例变量。您将$ credentials引用为本地变量。如果您想要引用实例变量,则必须使用符号$< object> - > variableName。在实例方法中,您可以使用$ this->凭据。但是,您处于静态函数中,该函数没有关联的对象。因此,您无法引用实例变量。

在你的调用函数中,你必须引用类Config的对象(比如$ myConfig)并调用一个名为“get”的方法,比如

$myConfig->get($credential);

“get”需要声明一个方法而不是静态函数。然后方法“get”可以访问实例变量“credentials”作为$ this->凭证。