Как вы разрабатываете свой код, действительно зависит от вас.Однако были некоторые ребята, которые уже подумали об этом и определили стандарт PSR-0 .Вообще ваша концепция кажется не очень полезной.Если что-то пойдет не так в пространстве имен \My\Space
(я думаю), все ожидают исключения из этого пространства имен.Соответствующие try-catch
-предложения проще конструировать, если между причиной и самим исключением существует логическая связь.
try {
$x = new \My\Space\Class;
$x->doSomething();
} catch (\My\Space\SomethingWentWrongException $e) {
// something went wrong
} catch (\My\Space\Exception $e) {
// something unexpected from this namespace went wrong
}
Обновление (отражает точность вопроса):
Я думаю, что есть (скажем, 2.5);) Вы можете поместить базовый класс в пространство имен, где он обычно используется / реализован / расширен, например, *\Filter\FilterInterface
и *\Filter\ConcreteFilter
.Другое решение состоит в том, чтобы поместить его на один уровень вверх (*\Filter
) и либо дать имя под-пространству имен после интерфейса / базового класса, либо просто назвать его как-нибудь еще (это половина решения).Я предпочитаю последний, например, интерфейс *\Filter
и конкретный класс *\filters\SomeFilter
(и да, мои пространства имен в нижнем регистре;)).
Суть в том, что вы остаетесь с вашим решением.Не перепутайте несколько «стилей».