我必须在PHP中共享一个配置对象的实例。 该对象包含db username和db password。 db用户可以更改。所以我必须分享te对象实例。
实施例
默认数据库用户是'默认'。 default只具有从db中选择数据的权限。
当网站用户以admin身份登录网站时,db user必须更改为“admin”。 admin有权使用SELECT,UPDATE,DELETE等。
当网络用户以普通用户身份登录时,db用户必须更改为“normal”,normal具有SELECT,UPDATE等权限。
我要分享配置实例。分享这个对象最安全的方法是什么?
答案 0 :(得分:0)
您可以使用singleton pattern以便在应用程序中的任何位置访问一个实例。
我还建议您使用单例作为连接处理程序,您可以在其中获取,设置和维护连接,您还可以在其中存储登录凭据。
示例:
<?php
class ConnectionManager
{
private $hostname;
private $username;
private $password;
private $connections = array();
private static $instance = null;
public static function getInstance ()
{
if (self::$instance == null)
self::$instance = new self();
return self::$instance;
}
private function __construct ()
{}
public function newConnection ($name, $database)
{
// Connect to database using predefined credentials
$this->connections[$name] = new PDO();
}
public function __get ($name)
{
if (!array_key_exists($name, $this->connections))
die("Could not get connection: $name");
return $this->connections[$name];
}
}
// Create a new connection named database1
ConnectionManager::getInstance()->newConnection('database1', 'database_name');
// Load connection database1
ConnectionManager::getInstance()->database1->prepare("SELECT * FROM table");
?>