Исходя из моего текущего понимания процесса, я выбрал бы следующий подход:
Объект, который расшифровывает данные, предоставляет услугу. Такие объекты чаще всего передаются в
через конструктора в качестве соавтора:
class ClientClass {
private $decryptor
public function __construct(Decryptor $decryptor) {
$this->decryptor = $decryptor;
}
public function doSomethingWith(DataSet $data) {
$key = $DataSet->getKey();
// do stuff, decide whether there are encryption needs
$encryptedKey = $this->decryptor->decrypt($key);
}
}
Обратите внимание, что здесь есть место для улучшения с получением ключа из набора данных (тогда мне нужно было бы узнать больше о том, что достигается, отсюда и название ClientClass).