Проблема зависимости пакета Symfony 2 - PullRequest
3 голосов
/ 24 февраля 2012

Я создал пакет для управления разрешениями группы пользователей. Я хочу сделать проект независимым, переместив его в каталог vendors.
Чтобы сделать этот пакет неизменным, я переместил данные пользователей в пакет пользовательских метаданных.
Основной пакет содержит имя пользователя и адрес электронной почты только о пользователе, а usermeta содержит все остальное (имя, дату рождения и т. Д., Что требуется проекту).

Проблема заключается в том, что основной пользовательский пакет предназначен для принадлежности к базовой группе пакетов, из которой каждый проект использует одно и то же.
Отношение user-usermeta теперь создало зависимость. Так что каждый проект будет нуждаться в этом.

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

1 Ответ

5 голосов
/ 28 февраля 2012

Я предлагаю вам обрабатывать только UserInterface вместо объекта User в вашем комплекте.

В случае, если Symfony UserInterface не реализует все необходимое (имя пользователя, но не адрес электронной почты), создайте свой собственный UserInterface в своем комплекте:

namespace YourDomain\YourBundle\Interface;

use Symfony\Component\Security\Core\User\UserInterface as BaseInterface;

/**
 * UserInterface is the interface that user classes must implement.
 */
interface UserInterface extends BaseInterface
{
    /**
     * Returns the email address of the user.
     *
     * @return string The user email address
     */
    function getEmail();
}

И затем, в проектах, использующих ваш пакет, ваша сущность User должна реализовывать ваш конкретный интерфейс вместо Symfony UserInterface.

...