Где я должен поместить константы, связанные с доменом?

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

Я закончил с этим:

namespace Example\domain;

interface iRandomPasswordService {

    const RANDOM_PASSWORD_SIZE = 6;

    public function getPassword();

}

namespace Example\infrastructure;

use Example\domain\iRandomPasswordService;
use Example\domain\Password;
use JUserHelper;

class RandomPasswordService implements iRandomPasswordService {

    public function getPassword(){
        $randomPassword = JUserHelper::genRandomPassword(self::RANDOM_PASSWORD_SIZE);
        return new Password($randomPassword);
    }

}

Я ненавижу PHP и Joomla тоже, не упоминайте об этом. Я жду одобрения или лучшей идеи. : -)

3 голоса | спросил inf3rno 16 FebruaryEurope/MoscowbThu, 16 Feb 2017 13:59:21 +0300000000pmThu, 16 Feb 2017 13:59:21 +030017 2017, 13:59:21

2 ответа


2

Я думаю, что есть два приемлемых места, в которых может храниться длина сгенерированных паролей, что лучше зависит от того, насколько вы контролируете службу генерации /аутентификации паролей и ваше фактическое приложение.

  1. Длина пароля запечатана в самом приложении генерации, потому что его действительно беспокоит эта служба для управления всем созданным им паролем достаточно долго, чтобы быть в безопасности.
  2. Длина требуемого пароля передается службе приложением, а приложение хранится в файле констант /конфиг с другими значениями, связанными с аутентификацией /безопасностью. Я не буду хранить это значение на интерфейсе, потому что если он изменится, вам придется обновлять интерфейс и везде, где используется интерфейс.

Я бы предпочел вариант 1, если я не смог изменить службу генерации сам, потому что он сохраняет все проблемы с аутентификацией пользователя в службе, которую вы выбрали для управления ими.

ответил Ryathal 16 FebruaryEurope/MoscowbThu, 16 Feb 2017 16:05:07 +0300000000pmThu, 16 Feb 2017 16:05:07 +030017 2017, 16:05:07
1

Я не считаю, что константы должны быть помещены в интерфейс. Цель интерфейса - определить, что вы должны определить в каждой реализации. Я бы поместил его в службу или какой бы класс реализации не был.

ответил unflores 16 FebruaryEurope/MoscowbThu, 16 Feb 2017 16:01:11 +0300000000pmThu, 16 Feb 2017 16:01:11 +030017 2017, 16:01:11

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132