我必须在PHP中共享一个配置对象的实例。此对象包含db用户名和db密码。db用户可以更改。所以我必须共享对象实例。
举例说明。
默认数据库用户为' Default‘。default只有从数据库中选择数据的权限。
当网站用户登录到网站作为管理员,数据库用户必须更改为‘管理员’。管理员有权选择,更新,删除等。
当web用户以普通用户身份登录时,db用户必须更改为“正常”普通用户具有选择、更新等权限。
我必须共享配置实例。共享此对象的最安全方式是什么?
发布于 2012-03-26 17:10:22
您可以使用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");
?>https://stackoverflow.com/questions/9869277
复制相似问题