2012-03-26 2 views
0

PHP에서 설정 오브젝트의 인스턴스를 공유해야합니다. 이 개체는 db 사용자 이름과 db 암호를 포함합니다. db 사용자가 변경할 수 있습니다. 그래서 객체 인스턴스를 공유해야합니다.오브젝트를 공유하는 가장 안전한 방법은 무엇입니까? PHP

예.

기본 db 사용자는 '기본값'입니다. 기본값은 db에서 데이터를 SELECT 할 수있는 권한 만가집니다.

웹 사이트 사용자가 웹 사이트에 admin으로 로그인하면 db 사용자는 'admin'으로 변경해야합니다. 관리자가 SELECT 권한, UPDATE를 가지고, 삭제 등

, DB를 사용자가 일반 사용자로 웹 사용자 logges 내가했습니다

등 SELECT, UPDATE로 '정상'정상이 권리로 변경하는 경우 config 인스턴스를 공유합니다. 이 객체를 공유하는 가장 안전한 방법은 무엇입니까?

답변

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"); 
?> 
관련 문제