#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. На меня это не действует… :/