我可以从课外获取受保护变量的值吗?

时间:2013-04-15 20:31:34

标签: php mysqli

我想从配置文件中获取变量。

首先,我有一个课程:

var $host;
var $username;
var $password;
var $db;

现在我有了这个:

protected $host = 'localhost';
protected $username = 'root';
protected $password = '';
protected $db = 'shadowcms';

这用于我的mysqli连接的__construct函数

但是现在我需要在类本身中插入值,而不是从配置文件中获取它们。

3 个答案:

答案 0 :(得分:4)

受保护的成员无法直接从课外访问。

如果您需要这样做,可以提供accessors来获取/设置它们。您也可以将它们公开并直接访问它们。

答案 1 :(得分:2)

http://php.net/manual/en/language.oop5.visibility.php

  

声明受保护的成员只能在类中访问   本身以及继承和父类。

换句话说,在配置类中定义受保护的属性。它们只能通过继承该配置类(直接)来访问。

class ConfigBase
{
  protected $host = 'localhost';
}

class MyConfig 
{
  public function getHost()
  {
    return $this->host;
  }
}

$config = new MyConfig();
echo $config->getHost(); // will show `localhost`
echo $config->host; // will throw a Fatal Error

答案 2 :(得分:0)

你可以使用带有变量的getter,比如

public function get($property) {
    return $this->$property;
}

然后你可以做

$classInstance->get('host');

例如。