PHP - эквивалент файла конфигурации 'PDO' - PullRequest
5 голосов
/ 15 марта 2011

Возможно, на этот вопрос уже был дан ответ - если да, просто оставьте комментарий ниже, и я его удалю.

Я изучал классы на PHP и в то же время делалперейти к PDO.

Одна концепция, которую я не могу найти, заключается в том, как сопоставить ее с классами:

config.php

<?php

$host = 'localhost';
$user = 'user';
$pass = 'pass';

$con = mysql_connect($host, $user, $pass) or die("MySQL Error");
mysql_select_db("account_db", $con);

?>

another.php

<?php

require_once('config.php');

$selectStatement = "SELET foo FROM bar";
$selectQuery = mysql_query($selectStatement, $con);

?>

Я не совсем понял, как мне создать файл / класс конфигурации дляСоединение PDO, а затем использовать его в другом классе, т.е. пользователи, как показано ниже:

<?php

class Users
{
    private $_userId;

    function setUserId($username)
    {
        // Use a predefined database handle to connect to a database to get the users ID - I assume using a preconfigured $dbh handle via an include or extend?
        $sth = $dbh->prepare("SELECT id FROM users WHERE username = :username");
        $sth->bindParam(':username', $username);
        ...
    }
}

?>

Спасибо всем:)

1 Ответ

7 голосов
/ 15 марта 2011

В моих проектах я предпочитаю использовать класс со статическим членом, который содержит объект PDO.

<?php
class DB
{
   private static $instance = null;
   public static function get()
   {
       if(self::$instance == null)
       {
           try
           {
               self::$instance = new PDO('mysql:host=localhost;dbname=name', 'user', 'abc123');
           } 
           catch(PDOException $e)
           {
               // Handle this properly
               throw $e;
           }
       }
       return self::$instance;
   }
}

Я могу получить к нему доступ так:

<?php
require 'DB.php';
class Users
{
    private $_userId;

    function setUserId($username)
    {
        // Using DB::get() to get the PDO object
        $sth = DB::get()->prepare("SELECT id FROM users WHERE username = :username");
        $sth->bindParam(':username', $username);
        ...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...