我在使用外部文件中定义的变量时遇到问题,无法在类构造函数中使用。
basic.php:
<?php
$config = array(
'sqlHost' => 'localhost',
'sqlUser' => 'root',
'sqlPassword' => '',
'sqlDatabase' => 'test',
);
$temp= "test";
?>
test.php的:
<?php
require_once('basic.php');
class foo{
private $bar;
function __construct() {
$this->bar = new mysqli($config['sqlHost'],$config['sqlUser'],$config['sqlPassword'],$config['sqlDatabase']);
echo $temp;
}
}
$tester = new report;
?>
我总是回过头来定义$ config,但是,$ temp有效。
任何想法如何解决这个问题?
答案 0 :(得分:1)
用dependency injection注明它(好)
要么
使用global
modifier(坏)......
答案 1 :(得分:0)
<?php
// ... your class
public function __construct(array $config)
{
// set class properties but check first if config is valid
}
或将你的配置放在一个自己的类中,然后将这个配置注入你的foo类
<?php
// ... your class
public function __construct(Config $config)
{
// set class property
}
旁注: 由于这似乎是针对数据库连接,因此请确保仅为请求创建一个对象。有些人使用Singleton模式,但我不推荐它。最后,它是您的代码,因此只有您可以决定解决方案的外观。
答案 2 :(得分:-2)
在test.php中
<?php
require_once('basic.php');
class foo{
global $config; // add this line.
private $bar;
function __construct() {
$this->bar = new mysqli($config['sqlHost'],$config['sqlUser'],$config['sqlPassword'],$config['sqlDatabase']);
echo $temp;
}
}
$tester = new report;
?>
然后它会起作用