область подключения php pdo - PullRequest
0 голосов
/ 25 мая 2010

Эй, ребята, у меня есть класс соединения, который я нашел для pdo. Я вызываю метод подключения на странице, на которой находится файл. Проблема в том, что внутри функций переменная $ conn не определена, хотя я заявлял, что метод был общедоступным, и мне было интересно, есть ли у кого-нибудь элегантное решение, отличное от использования global в каждой функции. Любые предложения приветствуются.

СОЕДИНЕНИЕ

class PDOConnectionFactory{
    // receives the connection
    public $con = null;
    // swich database?
    public $dbType  = "mysql";

    // connection parameters
    // when it will not be necessary leaves blank only with the double quotations marks ""
    public $host    = "localhost";
    public $user    = "user";
    public $senha   = "password";
    public $db  = "database";

    // arrow the persistence of the connection
    public $persistent = false;

    // new PDOConnectionFactory( true ) <--- persistent connection
    // new PDOConnectionFactory()       <--- no persistent connection
    public function PDOConnectionFactory( $persistent=false ){
        // it verifies the persistence of the connection
        if( $persistent != false){ $this->persistent = true; }
    }

    public function getConnection(){
            try{
                // it carries through the connection
                $this->con = new PDO($this->dbType.":host=".$this->host.";dbname=".$this->db, $this->user, $this->senha, 
                array( PDO::ATTR_PERSISTENT => $this->persistent ) );
                // carried through successfully, it returns connected
                return $this->con;
            // in case that an error occurs, it returns the error;
            }catch ( PDOException $ex ){  echo "We are currently experiencing technical difficulties. We have a bunch of monkies working really hard to fix the problem. Check back soon: ".$ex->getMessage(); }

    }

    // close connection
    public function Close(){
        if( $this->con != null )
            $this->con = null;
    }

}

СТРАНИЦА, ИСПОЛЬЗУЕМАЯ НА

include("includes/connection.php");

$db = new PDOConnectionFactory();
$conn = $db->getConnection();

function test(){
try{
    $sql = 'SELECT * FROM topic';
$stmt = $conn->prepare($sql);
$result=$stmt->execute();

}
catch(PDOException $e){ echo $e->getMessage(); }
}
test();

1 Ответ

0 голосов
/ 25 мая 2010

Вы можете объявить класс базы данных, в котором вы используете класс conn pdo, тогда вам не нужно дублировать исходные данные этого. И все операции с базой данных вы можете делать с помощью этого класса. Я имею в виду, что мой ответ - то, что вы ищете.

Но я вижу, вы используете только класс PDO hadle в шаблоне Product Factory. Вы можете использовать обычный полный класс поддержки баз данных в PDO (включая выполнение запросов из одной функции) и без этого шаблона проектирования, когда вы не хотите использовать много механизмов коннекторов базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...