我想从配置文件中获取变量。
首先,我有一个课程:
var $host;
var $username;
var $password;
var $db;
现在我有了这个:
protected $host = 'localhost';
protected $username = 'root';
protected $password = '';
protected $db = 'shadowcms';
这用于我的mysqli连接的__construct函数
但是现在我需要在类本身中插入值,而不是从配置文件中获取它们。
答案 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');
例如。