2012-06-04 3 views
1

Я нахожусь на Symfony 2.0 и понял, что сторонние библиотеки входят в/vendor. У меня есть два третьих класса, которые я использую, один - TCPDF, а другой - класс Paypal. Также нет официальных пакетов Symfony2.В Symfony2, где я помещаю, например. TCPDF?

Так что я следовал инструкции здесь, которые пространств имен их и делает их пригодными для использования внутри/поставщика:

Add third party libraries to Symfony 2

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

php bin/vendors install --reinstall 

..those пользовательские классы исчезают, потому что они не имеют репо Git в «DEPS». Это вызвало реальные проблемы, например. при попытке развертывания, например. PagodaBox. Я получаю сильный инстинкт, что этот код в то время как «сторонний» относится ближе к коду моего приложения.

Если это правда, то она должна:

  • Сядьте рядом с моими контроллерами в И/MyCompany/MyBundle/Controller/tcpdf.php
  • быть с другими моими заказными написано услугами в И/MyCompany/MyBundle/внедрение зависимости/tcpdf.php
  • Перейти в своем собственном каталоге под мою пачкой: ЦСИ/MyCompany/MyBundle/TCPDF/tcpdf.php

Если переместить эти два класса от/поставщика к одному из выше , я бы вывести его из контроллера с помощью инструкции «use», или мне нужно определить его в «services.yml»?

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

Было бы разумным переключиться на композитор еще до того, как Symfony 2.1 готов?

Спасибо за чтение.

+1

Может быть, вы должны рассмотреть возможность использования пучков с открытым исходным кодом, такие как этот TCPDF пачка: https://github.com/ioalessio/IoTcpdfBundle и этого платежной пачка: https://github.com/schmittjoh/JMSPaymentPaypalBundle – Paulpro

+0

IoTcpdf кажется в основном TCPDF мост для вывода шаблонов Twig в виде PDF-файлов: не что-то, что мне нужно. Он не включает Tcpdf внутри себя, он говорит, что Tcpdf вручную вводит в каталог поставщика, чего я пытаюсь избежать. Предложение Мэтта более актуально. Сегодня я посмотрел на JMSPayment, и хотя мне бы хотелось использовать его когда-нибудь, у него много зависимостей, и в документации нет подробных сведений о том, как использовать его в качестве простого интерфейса к API Paypal. –

ответ

4

Если вы используете deps для управления библиотеками поставщиков, вы должны добавить git repo для этих библиотек.

Для TCPDF вы можете использовать:

[TCPDF] 
    git=git://tcpdf.git.sourceforge.net/gitroot/tcpdf/tcpdf 
    target=/tcpdf 

Если у вас есть другие библиотеки, которые не в общественном репо, то вы можете зафиксировать их в своей собственной репо.

То же самое относится и к композитору. Просто синтаксис для добавления непакета-репо отличается.

+0

Мэтт: спасибо за ответ. Как вы получили Git repo для TCPDF. Вы сами создали URL-адрес из http://sourceforge.net/apps/trac/sourceforge/wiki/Git? Будет ли лучше использовать это, чем https://github.com/tcpdf/tcpdf? В другой библиотеке (Paypal, закрытый источник, для которой я купил лицензию), я внес изменения, поэтому я думаю, что я включу в свое собственное исходное дерево в качестве службы (в DependencyInjection), если не подумать иначе. –

+0

Источник SourceForge - это проект, где разрабатывается проект. GitHub - просто зеркало. Либо было бы хорошо использовать. – MDrollette

+1

Чтобы ответить на вопрос Мэтта, как только вы включили TCPDF в свои папки и обновленные поставщики, следующий шаг: IN app/autoload.php ADD 'TCPDF' => __DIR __. '/ ../vendor/tcpdf', TO $ Loader-> registerPrefixes (массив()); Затем вы можете использовать его в контроллере или службе, например. $ pdf = new \ TCPDF(); –

Смежные вопросы