Пористость в выборке классов в PHP - PullRequest
0 голосов
/ 21 сентября 2019

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

В PHP у меня есть класс с именем DB и в этом class я записываю связи с базой данных в подключаюсь к базе данных :

class DB {
    private static $_dbConnect = null,
    $dbUser = DB_USER,
    $dbPass = DB_PASS,
    $dbName = DB_NAME,
    $dbTable = null;
    function __construct($dbTable) {
        self::$dbTable = $dbTable;
        if (!isset(self::$_dbConnect) || self::$_dbConnect == null) {
            try {
                self::$_dbConnect = new PDO("mysql:host=localhost;dbname=".self::$dbName,self::$dbUser,self::$dbPass);
                $isResult = self::$_dbConnect->prepare("SHOW TABLES FROM ".self::$dbName." LIKE '${dbTable}'");
                if ($isResult->rowCount() == 0) {
                    $isQuery = "";
                    if ($dbTable == DB_TABLES['user']) {
                        $isQuery = ""; //write user table query
                    } else if ($dbTable == DB_TABLES['admin']) {
                        $isQuery = ""; //write admin table query
                    }
                    self::$_dbConnect->prepare($isQuery);
                }
            } catch (PDOException $e) {
                throw $e->getMessage();
            }
        }
    }
    private function ifString($strings=[],$sep='&') {}
    private function stringSep($strings=[]) {}
    public function existValue($strings=[]) {}
    public function insertTB($data=[],$ifArray=[]) {}
    public function getDataTB($ifArray=[]) {}
    public function updateTB($data=[],$ifArray) {}
    public function deleteTB($ifArray) {}
    public function getAllRecords($ifArray=[]) {}
    function __destruct() {
        if (isset(self::$_dbConnect) || self::$_dbConnect != null) {
            self::$_dbConnect = null;
        }
    }
}

Но проблема в том, что я определил соединение с базой данныхв __construct у меня возникают проблемы, когда я запускаю два экземпляра этого class одновременно:

$DB['user'] = new DB(DB_TABLES['user']);
$DB['admin'] = new DB(DB_TABLES['admin']);

Проблема в том, что теперь, когда я пытаюсь использовать $DB['user'], все сделано на $DB['admin']

Есть друзья решения?

Примечание: если я задам вопроснемного плохо, я прошу прощения, потому что я фарси

1 Ответ

1 голос
/ 21 сентября 2019

Удалить объявление static для _dbConnect.static означает, что переменная определяется один раз независимо от того, сколько экземпляров класса создано.

private $_dbConnect = null,

Если $_dbConnect не является статическим, ссылки на self::$_dbConnect должны быть заменены на$this->$_dbConnect.

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