我是面向对象编程的新手。我创建了这个连接到mysql数据库的类,可以从模型中调用。有什么方法可以包含' database.class.php'(我的db类文件) 在index.php中,使其成为全局,然后从任何对象访问它,如此
$object = new object;
$object->dofunc();
另一个问题是dofunc()期望一个数组用于参数,我如何使这个数组也是全局的,所以它可以从任何地方访问!
这是我的db类
<?php
class Database {
private $db;
public function connect($config) {
if (is_array($config)) {
extract($config);
$db = mysqli_connect($host, $username, $password);
if ($db) {
echo "balbabla";
if (mysqli_select_db($db, $database)) {
}
else {
throw new exception("<br/><strong>Could not connect to $database under $host</strong>");
}
}
else {
throw new exception("<br/><strong>Could not connect to mySQL database! Please check your details</stromg>");
}
}
}
}
?>
这也是包含数组的文件
<?php
//Configuration for the MVC Framework
$_SETTINGS = array();
//Routing settings!
//Default controller(This controller will be loaded if there is none mentioned in the URI)
$_SETTINGS['default_controller'] = 'User';
//Default method(This will be the default method run if no method is mentioned in the URI)
$_SETTINGS['default_method'] = 'Register';
//Database settings
$DB_SETTINGS['host'] = 'localhost';
$DB_SETTINGS['username'] = 'root';
$DB_SETTINGS['password'] = 'foobar';
$DB_SETTINGS['database'] = 'freelance';
?>
提前致谢
答案 0 :(得分:1)
有什么方法可以在index.php中包含'database.class.php'(我的db类文件),让它全局
你可以,但你不应该。
另一个问题是dofunc()期望一个数组用于参数,我如何使这个数组也是全局的,所以它可以从任何地方访问!
你不应该再这样做。
Dependency injection是要走的路。
答案 1 :(得分:-1)
要从函数中访问全局变量,请使用global
关键字。例如,要从Database::connect()
访问$ DB_SETTINGS,您可以执行以下操作:
public function connect() {
global $DB_SETTINGS;
...
然后可以在该函数内访问该数组。
对于全局可访问的类,它们自动就是这样。定义一个类使它可以在任何地方使用。