1

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

首先,我有一堂课:

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

现在我有这个:

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

这在我的 mysqli 连接的 __construct 函数中使用

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

4

3 回答 3

4

受保护的成员不能直接从类外部访问。

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

于 2013-04-15T20:34:53.837 回答
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
于 2013-04-15T20:33:45.840 回答
0

您可以将 getter 与变量一起使用,例如

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

然后你可以做

$classInstance->get('host');

例如。

于 2013-04-15T20:37:04.367 回答