Как использовать MySQLi внутри пространства имен - PullRequest
18 голосов
/ 29 декабря 2011

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

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

 namespace Project;

 class ProjectClass{

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

 }

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

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

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

1 Ответ

35 голосов
/ 29 декабря 2011

По умолчанию 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(/* ... */);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...