この記事では、thinkphp の AOP アスペクト プログラミングを使用してデータを迅速に検証する方法を紹介します。一定の参考値があります。必要な友人は参照できます。お役に立てれば幸いです。
##1) まずディレクトリ構造を確認します##2) 通常の書き込みを使用して検証を構築します
#これは主に 4 つのステップに分かれており、独立したバリデーターやデータ検証を 1 つずつ使用する場合に比べて、ほとんどのコードは最適化されていますが、実際に使用すると、複数の検証または複数の検証に陥っていることがわかります。モジュールを作成する場合、このコード列を記述するのに繰り返しの冗長性が発生します。
質問? アピール コードを 1 行に圧縮する方法AOP: ソース コードを変更せずに、動的にプログラムに機能を均一に追加します。 AOP は実際には GoF デザイン パターンの継続です。このデザイン パターンは呼び出し元と呼び出し先の間の分離を絶えず追求し、コードの柔軟性とスケーラビリティを向上させます。AOP はこの目標を実現したものであると言えます## ただし #AOPと OOP は文字通り非常に似ており、異なる分野のための 2 つの設計アイデアです。 OOP (オブジェクト指向プログラミング) は、ビジネス処理プロセスのエンティティとその属性と動作を抽象的にカプセル化し、論理ユニットをより明確かつ効率的に分割します。 私たちは、単一関数を持つモジュールをマージおよび統合することで問題を解決するために、aop プログラミングのアイデアを導入しました。
私たちは、common の下に validate ディレクトリを作成し、継承する BaseValidate ファイルを作成しました\validate
<?php namespace app\common\validate; use app\common\controller\Base; use think\Request; use think\Validate; class BaseValidate extends Validate { /** * 基础类控制器 * @param null|array $data * @return bool */ public function goCheck($data = null) { # 当 data 不存在的时候去自动校验获取到的参数 if( is_null($data) ) { # 获取待验证的参数 $data = Request::instance()->param(); } # 进行验证 if( !$this->check($data) ) { (new Base())->ajaxjson(Base::error, $this->getError()); # 抛出的自定义异常 } return true; }
最適化されたコード
これは多くの場所で使用されているため、多くのコードを節約でき、すぐに快適になります。最適化 2
たとえば、baseValidate のコードの 1 つは is_null で、渡されたすべてのデータを検証するために記述されています。すべてのデータを検証する必要がある場合は、
# と記述するだけで済みます。データも検証できますが、疑問が生じます。データ データを使用するには、やはりコントローラーでデータを再取得する必要がありますが、これはお勧めできません。そのため、これを行うことにしましたPHP ビデオ チュートリアル 列に注目してください。
以上がthinkphp で AOP アスペクト プログラミングを使用してデータを迅速に検証する方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。