坚持这一点。让我们从代码开始。
的settings.php
class settings{
public $db_host;
public $db_username;
public $db_password;
public $db_database;
public function db_settings(){
/*$db_host = "localhost";
$db_username = "root";
$db_password = "";
$db_database = "eveonline";*/
$this->db_host = "localhost";
$this->db_username = "root";
$this->db_password = "";
$this->db_database = "eveonline";
}
这是我想要使用的地方
class xmlUpdate{
include_once ('./lib/settings.php'); //This wont work
public $itemCount;
public function dbItemCount(){
include_once ('./lib/settings.php');// This will work, but only in this function
在这种情况下,它用于数据库变量,所以每当我想建立数据库连接时,我都不必重复代码。
如何在另一个类中使用数据库变量,整个类,而不仅仅是它允许我包含的函数?
答案 0 :(得分:0)
我会将include放入类的__construct()
函数中,实例化一个新类,读出变量,将它们放在类中的局部变量中。
class xmlUpdate{
public $db_host;
public $db_username;
public $db_password;
public $db_database;
function __construct(){
include_once('./lib/settings.php');
$settings = new settings();
$this->db_host = settings->db_host;
$this->db_username= settings->db_username;
$this->db_password= settings->db_password;
$this->db_database= settings->db_database;
}
}
或者你可以让xmlUpdate类扩展设置类。
答案 1 :(得分:0)
这可能是一种可能的方法,Database类也可以具有连接和断开连接,查询等功能。编写__autoload函数,这样就不必包含任何文件。另一种简单的方法是定义index.php中的所有数据 - > define('DB_HOST','localhost');然后通过DB_HOST访问它。
class DataBase {
private static $instance = null;
public $db_host;
public $db_username;
public $db_password;
public $db_database;
private function __construct() {
$this->db_host = "localhost";
$this->db_username = "root";
$this->db_password = "";
$this->db_database = "eveonline";
}
private function __clone() {
}
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new DataBase;
}
return self::$instance;
}
}
class Xml {
protected $db;
public function __construct() {
$this->db = DataBase::getInstance();
}
public function getUsername() {
return $this->db->db_username;
}
}
// test
$xml = new Xml;
print $xml->getUsername() . "\n";
答案 2 :(得分:0)
您可以将它们设为静态或遵循单例模式
答案 3 :(得分:-1)
我认为你要做的是有一些 GLOBAL 类型的东西,你可以从任何地方访问。
正如用户busypeoples建议的那样,如果要为数据库包含一些复杂的行为(如连接),可以尝试使用单一模式。查看单例模式,你一定能找到一些PHP特定的例子。
如果您只想为数据库共享一些简单的连接字符串,密码和用户,那么您可以使用define语句。
//the db_info.php file
define( 'DB_NAME', 'mydevdatabase' );
define( 'DB_IP', '127.0.0.1' );
define( 'DB_USER', 'bob' );
define( 'DB_PASSWORD', 'password' );
之后,您可以在任何PHP文件的开头包含此文件并使用常量。
//some other php file
require_once( 'db_info.php' );
class Test
{
public function tester()
{
$some = DB_IP;
$other = DB_USER;
//your other code
}
public function otherfunction()
{
$some = DB_IP;
$other = DB_USER;
//your code
}
}