私はphpアプリを持っていますが、SOLIDの原則には合致していませんが、チーム全体が変更についてリファクタリングを試みています。私はグローバルログ(データベースの1つに保存されている)を追加し、モデルの更新に関する作成に保存しなければなりません。そのモデルはORMを使用しません。最初の解決策:静的ロガーを作成し、モデル上の操作後に呼び出します。グローバルログをアプリに追加 - SOLIDについて
public function save(ObjectEntity $entity)
{
// Some code to prepare entity
$this->insert($entity);
Logger::saveLog('Object has been saved');
// Or maybe better - separate classes for logs with interface
Logger::save(new LogObjectEntitySave());
}
...正しいですか?私はSOLIDとの調整もできていないと思っています。
public function saveAction()
{
// Controller code here
$model->save($objectEntity);
Logger::save(new LogObjectEntitySave());
}
しかし、問題がある:1つのアクションについて、何が保存しても、モデル内のデータを更新するためには、(私は、ときに新しい要素を追加したモデルの節約を呼び出した後のモデルで、または多分コントローラ上の - 私はこのような何かをどこに追加する必要があります私は既存のIDを持っていない)?/elseと2つのログクラスがまだ悪く見えます。それがいかに正しいべきか考えていない。