@codenaki

Как правильно использовать namespace?

Почему при использовании model как namespace я получаю Undefined class PDO ?
Если убрать этот namespace то я не получаю ни какой ошибки ..

<?php namespace model;

class DBConnection
{
    const DRIVER = "mysql:";
    const HOST = "127.0.0.1";
    const PORT = ":3306";
    const DATABASE = "tests";
    const USER_NAME = "root";
    const PASSWORD = "*******";

    private static $instance;

    private function __construct(){}

    public static function getInstance(){
        if(self::$instance == null){
            self::$instance = new DBConnection();
        }
        return self::$instance;
    }

    public function getConnection():PDO{
        $con = new PDO(DRIVER.HOST.PORT.DATABASE,USER_NAME,PASSWORD);
        $con->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        return $con;
    }
}


59ec2ff7a5207858635728.png
  • Вопрос задан
  • 254 просмотра
Решения вопроса 1
@Camaro67
Помог? - "Отметить решением"
Потому что PDO находиться в глобальном пространстве имен, а не в model.

Соответственно вам нужно либо импортировать в текущее пространство
use PDO;

либо обращаться с указанием пространства имен
\PDO;

Первый вариант предпочтительней.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@PapaStifflera
Родился, вырос...
Потому что для доступа к глобальным классам нужно использовать конструкцию \ClassName
public function getConnection():\PDO{
        $con = new \PDO(DRIVER.HOST.PORT.DATABASE,USER_NAME,PASSWORD);
        $con->setAttribute(\PDO::ATTR_ERRMODE,\PDO::ERRMODE_EXCEPTION);
        return $con;
    }
Ответ написан
Austin_Powers
@Austin_Powers
Web developer (Symfony, React.js)
Подключайте PDO через use, или работайте с явным указанием местоположения класса \PDO
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы