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

#php #mysqli

Вопрос:

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

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

  namespace Project;

 class ProjectClass{

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

 }
 

Тем не менее, он сообщает мне об этом сообщением

«Фатальная ошибка: класс ‘Projectmysqli’ не найден»

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

Ответ №1:

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

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

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

 $foo = new SomeNamespaceFoo();
 

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

 namespace Project;
$foo = new SomeNamespaceFoo();
 

Кроме того, вы можете явно импортировать пространства имен и избежать двусмысленности:

 namespace Project;

use Mysqli;

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

Комментарии:

1. На меня это не действует… :/