Как использовать MySQLi в пространстве имен

MySQLi отлично работает внутри класса без пространства имен и вне класса.

Недавно я начал использовать пространство имен, и теперь я наткнулся на код, похожий на следующий:

 namespace Project;

 class ProjectClass{

      public static function ProjectClassFunction{
          $db = new mysql(data, data, data, data);
      }

 }

Однако он сообщает мне сообщение

"Неустранимая ошибка: класс" Project\mysqli "не найден"

Мой вопрос: Как использовать mysqli внутри класса, который использует пространство имен?

Ответы

Ответ 1

По умолчанию PHP попытается загрузить классы из вашего текущего пространства имен. Обратитесь к классу в глобальном пространстве имен:

$db = new \mysqli(/* ... */);

Это то же самое, что вы делали бы при обращении к классу в другом пространстве имен:

$foo = new \Some\Namespace\Foo();

Обратите внимание, что если вы остановили начальную обратную косую черту, PHP попытается загрузить класс относительно вашего текущего пространства имен. Следующий код будет выглядеть в пространстве имен Project\Some\Namespace для класса с именем Foo:

namespace Project;
$foo = new Some\Namespace\Foo();

В качестве альтернативы вы можете явно импортировать пространства имен и сэкономить двусмысленность:

namespace Project;

use Mysqli;

class ProjectClass
{
    public static function ProjectClassFunction()
    {
        $db = new Mysqli(/* ... */);
    }
}