[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PSR-0 и наименование интерфейсов
chee
Хочу связать свою жизнь с интерфейсами, созрел. Но появилась проблема, которая была мне известна и раньше, но сейчас как бы прижало.

Есть допусти у меня свой неймспейс, допустим, CheeSoft;

ну и я хочу для всех своих библиотек в этом неймспейсе сделать папку куда буду класть интерфейсы, допустим Interface. Создать папку не проблема, но в итоге получается что в неймспейсе ключевое слови Interface, что в итоге приводит к печаль-беде.

Ах, да я забыл упомянуть, я всю это пытаюсь проделать в соответствии со стандартом PSR-0.

В интернете, поискав решения, я набрел на такой совет:

interface CheeSoft_Interface_Request
{
}


это как в Zend 1, но у меня возникает претензия на глобальную область видимость, что как бы не устраивает меня, подумав немного, я адаптировал это решение под свои требования и получил

namespace CheeSoft;

interface Interface_Request
{
}


это уже лучше, но как-то не очень красиво, при использовании выгладит это так

namespace CheeSoft;

class Request implements Interface_Request
{
}



Вопрос: как вы храните и именуете интерфейсы?

Внимание: Вопрос адресован тем кто использует PSR-0, PSR-4, остальных просьба избежать добавление сообщений в эту тему

Также прошу не холиварить по поводу ООП, интерфейсов и PSR стандартов.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
AlmazDelDiablo
Мне нравится реализация в Zend 2:

\App\Request\RequestInterface
\App\Request\RequestAbstract
\App\Request\SaveItems
\App\Request\LoadEntity

_____________
Блог | VK | GitHub | Twitch
vasa_c
Цитата
Создать папку не проблема, но в итоге получается что в неймспейсе ключевое слови Interface, что в итоге приводит к печаль-беде.

ну, как всегда, когда прикольный идентификатор уже занят - придумать ему взамен что-нибудь smile.gif

Цитата
ну и я хочу для всех своих библиотек в этом неймспейсе сделать папку куда буду класть интерфейсы, допустим Interface.

зачем их собирать в одном месте? как и классы интерфейсы должны быть размазаны ровным слоем по пакетам к которым относятся.

Я IRequest люблю.

Цитата

namespace CheeSoft;

class Request implements Interface_Request
{
}

Уж начали PSR-0 использовать, так и на PSR-2 обратите внимание. Уж мешать вместе камел-кейс с подчёркиванием как-то совсем не по пацански.

_____________
Блог ГО | Таблица символов Юникода | Графомания
bestxp
мне нравиться

Class One extends Two implements IRead, IWrite {}


для интерфейса просто префикс I
vasa_c
Ещё вариант не писать общие префиксы-суффиксы.
То есть пространство имён - My\Request и так понятно, что реквест.
А внутри интерфейс - I, базовый класс - Base, и так далее.
My\Request\Base - базовый класс для Request.

Единственная проблема в IDE будет десять вкладок и на всех Base.php.

_____________
Блог ГО | Таблица символов Юникода | Графомания
chee
Цитата (vasa_c @ 18.02.2014 - 09:30)
Уж начали PSR-0 использовать, так и на PSR-2 обратите внимание. Уж мешать вместе камел-кейс с подчёркиванием как-то совсем не по пацански.

я тот и другой использую, но в PSR-2 не видел что нельзя мешать можете сказать где стандарте это написано. ohmy.gif

Цитата (vasa_c @ 18.02.2014 - 09:30)
зачем их собирать в одном месте? как и классы интерфейсы должны быть размазаны ровным слоем по пакетам к которым относятся.

Ну ведь удобно когда все интерфейсы будут в одной папке или нет?


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
vasa_c
Цитата
я тот и другой использую, но в PSR-2 не видел что нельзя мешать можете сказать где стандарте это написано.

https://github.com/php-fig/fig-standards/bl...ing-standard.md
>Class names MUST be declared in StudlyCaps.
>The term "class" refers to all classes, interfaces, and traits.

Цитата
Ну ведь удобно когда все интерфейсы будут в одной папке или нет?

Ну классы то мы зачем-то разбиваем по пакетам и неймспейсам.
Интерфейсы тоже не сами по себе, каждый из них относится к одному из этих пакетов.

_____________
Блог ГО | Таблица символов Юникода | Графомания
chee
vasa_c Okay


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.