Как вы регистрируете пакеты в Symfony2.1, предназначенные для более старых версий Symfony?

Я пытаюсь использовать их расширение EntityAudit для Doctrine2 в моем приложении Symfony2.1.

Я новичок в этом, и я только начал понимать, сколько "правильных" методов было для установки новых пакетов для Symfony за эти годы. Какой-то файл "Deps" раньше существовал, но больше не существует? При установке Symfony «использование Composer» было вариантом — но, похоже, это был просто вариант. Теперь я начинаю думать, что это неправда.

В инструкциях EntityAudit это относится к «Автозагрузке», и, основываясь на других вещах, я, по-видимому, должен изменить массив registerNamespaces в моем Autoload.php. Только у меня этого нет. Итак, я нашел эту ссылку где парень указывает, что Symfony2.1 больше не делает этого в пользу использования Composer.

Я действительно не знаю, как использовать Composer в этом случае. На самом деле я вообще не знаю, как его использовать, но, похоже, я не смог сделать в нем 1 или 2 основных вещи - «обновить» себя и «установить» .. поставщиков? Во всяком случае, я не могу найти инструкций, достаточно общих, чтобы их можно было адаптировать для этой цели. Заранее благодарю за любую помощь!


person Offlein    schedule 12.11.2012    source источник


Ответы (1)


Файл deps используется в версии 2.0 для управления зависимостями. Версия 2.1 использует гораздо лучший инструмент управления зависимостями Composer.

Установить с композитором

Сначала вам понадобятся базовые знания о композиторе. Например, прочтите эту статью: http://net.tutsplus.com/tutorials/php/easy-package-management-with-composer/

Прежде чем вы сможете использовать composer для установки пакета, вы должны найти пакет Packagist этого пакета. Для SimpleThings\EntityAuditBundle вам следует искать пакет simplethings/entity-audit-bundle, и он существует: https://packagist.org/packages/simplethings/entity-audit-bundle

ПРИМЕЧАНИЕ

Packagist — это основной архив для Composer. Если вы ищете пакет, лучшее, что вы можете сделать, это проверить KnpBundles, это неофициальный архив Symfony Bundles. . Если пакет содержит файл README, он отображается там, а если в нем есть пакет Packagist, показывается ссылка на пакет. Это действительно полезный сайт для начала поиска комплектов.

Теперь у вас есть имя пакета, вы должны определить версию, которую хотите использовать. Поскольку это незаконченный пакет, мы можем использовать последнюю версию, используя версию dev-master. Но вполне возможно, что версия dev-master предназначена для Symfony2.2, и мы должны использовать другую версию, если мы используем Symfony2.1, это должно быть в файле README (в пакете, который вы можете просмотреть на Github или KnpBundles). Если его нет в README, вы можете использовать нужную версию. Пример примечания о версии можно найти в StofDoctrineExtensionsBundle.

Теперь мы можем добавить пакет в наш файл composer.json и обновить зависимости. Вы можете сделать это вручную:

  1. Добавьте его в файл composer.json:

    {
        ...,
        "require": {
            ...,
            "simplethings/entity-audit-bundle": "dev-master"
        }
    }
    
  2. Обновить зависимость

    $ php composer.phar update simplethings/entity-audit-bundle
    

    или обновить все зависимости

    $ php composer.phar update
    

Или вы можете сделать это одной командой:

  1. Запустите эту команду (которая включает пакет в composer.json и обновляет пакет)

    $ php composer.phar require simplethings/entity-audit-bundle:dev-master
    

Теперь бандл установлен в наш проект Symfony (в vendor/simpletings/) и автозагрузчик распознает этот бандл. Единственное, что нам нужно сделать сейчас, это зарегистрировать пакет в AppKernel:

// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    // ...

    public function registerBundles()
    {
        $bundles = array(
            ...,
            new SimpleThings\EntityAudit\SimpleThingsEntityAuditBundle(),
        );

        // ...
    }
}
person Wouter J    schedule 12.11.2012
comment
Воутер, какой отличный ответ, спасибо. Это так полезно. Чтобы сделать его идеальным для всех, кто придет после меня, несколько вещей, на случай, если вы когда-нибудь захотите расширить свой ответ: * Я думаю, у вас есть опечатка с EntityAudithBundle * Как кто-то должен знать об этом Packagist ?! Моя вина? * Вы говорите Но возможно, что версия dev-master предназначена для Symfony2.2, и мы должны использовать другую версию, если мы используем Symfony2.1, это должно быть в файле README. Какой README? В репозитории git этого пакета? Или где-то в Packagist? Я ничего не вижу о версиях в Git README. - person Offlein; 14.11.2012
comment
@Offlein, спасибо :) Сегодня я отвечу/исправлю ваши вопросы/баллы. - person Wouter J; 14.11.2012