Intereting Posts
Можно ли создать экземпляр класса PHP внутри другого класса? Как выбрать долготу, широту вокруг определения местоположения от mysql? настройка wampserver после установки, чтобы включить ssl Укажите шаблон пользовательской страницы WordPress для заголовка редактора seemnce. Значения, разделенные запятыми, в предложении MySQL «IN» Получить значение из объекта SimpleXMLElement Как получить счетчик комментариев Disqus для страницы с использованием API-интерфейса Disqus? Насколько плохо используется SELECT MAX (id) в MYSQL вместо mysql_insert_id () в PHP? для каждого цикла в javascript с данными json PHP показывает вывод foreach на экран, для каждого элемента Избавьтесь от Index.php в URL-адресах CodeIgniter Как добавить пользователя в пользовательскую аудиторию facebook PHP / Ajax: как показать / скрыть DIV значение переменной $ _SESSION? Создать таблицу mysql с переменной php не работает Как использовать setInterval в PHP?

Невозможно использовать X как Y, потому что имя уже используется, хотя это не

Я использую PHP 5.4 и имею структуру класса PSR-0, подобную следующей.

A \ Library \ Session.php :

namespace A\Library; class Session { ... } 

My \ Application \ Session.php :

 namespace My\Application; class Session { ... } 

My \ Application \ Facebook.php :

 namespace My\Application; use A\Library\Session; class Facebook { ... } 

Когда я пытаюсь запустить приложение, я получаю следующую ошибку:

Невозможно использовать A \ Library \ Session как сеанс, потому что имя уже используется в My \ Application \ Facebook.php

Хотя это не так, по крайней мере, в этом файле. Файл Facebook.php объявляет только класс Facebook и импортирует только один класс Session , A\Library .

Единственная проблема, которую я вижу, заключается в том, что другой класс Session существует в том же пространстве имен, что и класс Facebook , но поскольку он никогда не был импортирован в файл Facebook.php, я думал, что это вообще не имеет значения.

Я ошибаюсь (в этом случае укажите соответствующую документацию), или это ошибка?

В PHP есть ошибка, которая может повлиять на поведение, которое вы видите. Предполагается фатальная ошибка, но с включенным opcache он все равно может выполняться безупречно.

https://bugs.php.net/bug.php?id=66773

Если это все еще касается вас, проголосуйте за ошибку.

Нет, это не ошибка. Как упоминалось в разделе «Использование пространств имен: слияние / импорт»

используйте A \ Library \ Session;

такой же как:

 use A\Library\Session as Session; 

Поэтому попробуйте использовать что-то вроде:

 use A\Library\Session as AnotherSessionClassName; 

Единственная проблема, которую я вижу, заключается в том, что другой класс Session существует в том же пространстве имен, что и класс Facebook, но поскольку он никогда не был импортирован в файл Facebook.php, я думал, что это вообще не имеет значения.

Да, это имеет значение. Вот почему вам не нужно «импортировать» классы из одного и того же пространства имен. Если у вас конфликтующие имена из разных пространств имен, вам нужно присвоить псевдоним классу.

 namespace My\Application; use A\Library\Session as ASession; // choose a proper alias name here class Facebook { ... }