質問: PHPでフレームワークを使ってWebアプリケーションの開発をしています。 バリデーションの実装場所について教えてください。 現状はユーザーからの入力を検証をフォームが持っているバリデーションオブジェクトで行っています。(フレームワークの機能として提供されているのを使用しています) 当初はWebフォームからの入力だけだったので問題なかったのですが、CSVを取り込んでデータを作成する機能を追加するに当たりCSVデータのバリデーションはどうしたらいいのかと疑問に思いました。 フレームワークの提供するCRUDモデルは不備のあるデータをセットしてもエラーにはならず、saveメソッドを実行して初めてSQLエラーが発生するのでバリデーション処理をどこかで行う必要があります。 そこで考えたのがCRUDモデルにバリデーション機能を実装することですが、そうするとフォームのバリデーションとCRUDモデルのバリデーションで同じ様な処理を実装することになりメンテナンス性が悪くなります。 こういう場合は一般的にどうするのが適当なのかをアドバイスいただけないでしょうか? 特定のフレームワークでの実装方法についての質問ではありませんが、一応今使っているフレームワークはFuelPHPです。 バリデーション処理を実装する場所で悩んでいます。 概念的なお話や考え方などヒントがもらえたらと思います。 実際にこういう実装をしたという例を教えてもらえたりすると大変参考になるので経験者の皆様よろしくお願いします。
回答: FuelPHPは使ったことないですが... CakePHPでは、モデル側にバリデーション機能があるので、入力がフォームであろうとCSVであろうとモデルのバリデーションが使えるようになっています。 ※なお、バリデートエラーが有った場合、フォーム側と連携するようにもなっています。