#2) 通常の文章を使用して検証を構築します
これは主に 4 つのステップに分かれており、独立したバリデーターやデータ検証を 1 つずつ使用する場合に比べて、ほとんどのコードが最適化されていますが、実際に使用すると複数の問題があることがわかります。または複数のモジュールを使用する場合、このコード文字列の記述に繰り返しの冗長性が生じます。
質問? アピール コードを 1 行に圧縮する方法
AOP : 動的にコードを記述するテクノロジーソースコードを変更することなく、プログラムに一律に機能を追加します。 AOP は実際には GoF デザイン パターンの継続です。このデザイン パターンは呼び出し元と呼び出し先の間の分離を絶えず追求し、コードの柔軟性とスケーラビリティを向上させます。AOP はこの目標を実現したものであると言えます## ただし #AOPと OOP は文字通り非常に似ており、異なる分野のための 2 つの設計アイデアです。 OOP (オブジェクト指向プログラミング) は、ビジネス処理プロセスのエンティティとその属性と動作を抽象的にカプセル化し、論理ユニットをより明確かつ効率的に分割します。
私たちは、単一の関数を持つモジュールをマージおよび統合することで問題を解決するために、AOP プログラミングのアイデアを導入しました。common## の下に
私たちは、
validate# を作成しました。
ディレクトリに移動し、BaseValidate ファイルを作成し、
think\validateBaseValidate.php
<?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 のコードには、渡されたすべてのデータを検証するために記述されたコード文字列 is_null があります。すべてのデータを検証するときは、次のように記述するだけです##データはまた、検証も行われます。しかし、疑問があります。データ データを取得できませんでした。データ データを使用することはできません。コントローラーで再度取得する必要があります。これはお勧めできません。したがって、これを行うことにしました
関連する推奨事項: