Отображение имен пакетов на соответствующий путь к каталогу в Symfony2

Я не уверен, как поставить этот вопрос. Это немного расплывчато, но если вы столкнулись с Corpus Delicti, вы поймете, что я имею в виду.

Когда я впервые столкнулся с тем, как Symfony2 сопоставляет пакеты с путями, несколько дней назад, я уже был немного озадачен тем, почему они решили сопоставить имя пакета с

AxxBxxBundle на .../Axx/BxxBundle/...

Мне это решение кажется произвольным и запутанным, не поймите меня неправильно, это не серьезное препятствие и к нему можно привыкнуть за пять минут, но все же мне кажется, что оно пахнет забавно.

Я только что наткнулся на эту цитату в книге:

BundleName: имя_контроллера: имя_шаблона

Это логическое имя шаблона, которое сопоставляется с физическим расположением с использованием следующего соглашения.

/path/to/BundleName/Resources/views/ControllerName/TemplateName

И это неправильно, я думаю, должна быть косая черта между Bundle и Name.

Но эта цитата показывает мне, что даже во внутреннем кругу Symfony2 некоторые люди не находят это интуитивно понятным.

Итак, какая «философия» связывает этот пакет и его логику отображения?


person Raffael    schedule 25.07.2011    source источник


Ответы (2)


Это не совсем отвечает на вопрос о рассуждениях, но дает еще немного информации по Bundle-теме. Чтобы получить ответ на вопрос почему, возможно, вам следует связаться с Фабьеном Потенсье, который написал класс Symfony\Component\HttpKernel\Kernel, который опирается на это соглашение.

person Stefan Gehrig    schedule 25.07.2011
comment
я свяжусь с ним; у тебя случайно нет его номера? :D - person Raffael; 25.07.2011
comment
Я бы не выкладывал это здесь - если бы оно было у меня ;-) - person Stefan Gehrig; 25.07.2011
comment
Ваша преданность морали и долгу заставляет мое сердце почти таять! - person Raffael; 25.07.2011

Исходя из Zend Framework, для меня это не так уж плохо. Все эти классы начинаются с Zend_. Думая об этом как об имени владельца/создателя, все становится проще. В Java большинство библиотек начинаются с com.foobar.

Цитируя Фабьена: «Symfony2 опирается на хорошо известные шаблоны проектирования и лучшие практики из мира Java».

Ваше утверждение на самом деле не имеет смысла, или я упускаю вашу мысль:

И это неправильно, я думаю, должна быть косая черта между Bundle и Name.

Возможно, вы имели в виду: между Acme и DemoBundle? Похоже на дублирование, но

Цитируя Фабьена: «Пакет — это структурированный набор файлов, который реализует одну функцию и может быть легко передан другим разработчикам».

Я могу использовать пакет для блога от Acme, а затем найти аналогичный пакет от Emca. Скорее всего, их пакеты будут иметь одинаковые имена моделей, контроллеров и маршрутов. Использование их обоих: таким образом ничто не будет переопределено с помощью другой библиотеки. Таким образом, первое имя для создателя/владельца — предотвратить дублирование.

Так как это сложно использовать, я всегда называю свой My/DemoBundle для более быстрого использования: p Или вы можете дать ему собственное имя во время создания пакета консоли (если вам это не нравится)

Также:

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

Поскольку веб-ресурсы находятся в комплекте, я считаю, что им удалось сделать это правильно. Это позволит легко настроить и повторно использовать, например. в ядро ​​Symfony могут быть внесены более значительные (масштабные) улучшения, не влияющие на ваше приложение.

person Tjorriemorrie    schedule 27.07.2011