ThinkPHP 3.0 の新バージョンを見るのがとても楽しみです。CBD モードや AOP プログラミングのアイデアなど、多くの新しい概念が提案されているからです。これら 2 つの新しい概念を要約することに重点を置きます。
CBDの知識
公式マニュアルの引用: ThinkPHP バージョン 3.0 では、新しい CBD (コア + ビヘイビア + ドライバー) アーキテクチャ モデルが導入されています。これは、フレームワークがコア + ビヘイビア + ドライバー アーキテクチャ システムを採用しており、コアは最も重要な部分とラベルを保持しているためです。はマーキングの重要な位置に設定されており、その他の機能は動作拡張機能とドライバーを使用して組み合わせることができ、開発者は独自のニーズに応じて特定のラベルの位置を拡張または置き換えることができ、独自のフレームワークの最下層を簡単に追加できます。位置にラベルを付け、アプリケーション層にアプリケーション行を追加します。ラベルの位置は AOP の概念における「アスペクト」に似ており、システムの組み込みコア拡張機能が標準モードとみなされる場合、ユーザーはこれらの動作をすべてカスタマイズできます。実際、パターン拡張は動作を置き換えたり追加したりするだけでなく、カスタマイズされた目的を達成するために基礎となる MVC を置き換えたり変更したりすることもできます。この新機能を使用すると、開発者はパターン拡張機能を通じて自分自身または自社の開発フレームワークを簡単にカスタマイズできます。パターン拡張機能の新しいバージョンは、フレームワーク拡張機能のマスターであり、新しいマイルストーンを作成します。これがまさに新しいバージョンの本当の美しさです。 。
AOPに会いましょう
公式マニュアルからの引用:
AOP(Aspect-Oriented Programming、アスペクト指向プログラミング)は、OOP(Object-Oriented Programming、オブジェクト指向プログラミング)を補完・改良したものと言えます。 OOP では、カプセル化、継承、ポリモーフィズムなどの概念を導入して、オブジェクト階層を確立し、一般的な動作のコレクションをシミュレートします。分散オブジェクトにパブリックな動作を導入する必要がある場合、OOP は無力です。つまり、OOP では上から下への関係を定義できますが、左から右への関係の定義には適していません。例えばロギング機能。ロギング コードは、すべてのオブジェクト階層にわたって水平に分散される傾向があり、分散先のオブジェクトのコア機能とは何の関係もありません。セキュリティ、例外処理、透過的な永続性など、他のタイプのコードにも同じことが当てはまります。この種の無関係なコードが随所に散在することは、OOP 設計では横断的コードと呼ばれ、大量のコードの重複につながり、さまざまなモジュールの再利用に役立ちません。 AOP テクノロジーはその逆で、「クロスカッティング」と呼ばれるテクノロジーを使用して、カプセル化されたオブジェクトの内部を解剖し、複数のクラスに影響を与えるパブリックな動作を再利用可能なモジュールにカプセル化し、それを「アスペクト」と呼びます。側面。いわゆる「アスペクト」とは、簡単に言えば、システム内のコードの重複を減らし、結合を減らすために、ビジネスとは関係がないが、ビジネス モジュールによって共同で呼び出されるロジックや責任をカプセル化することです。モジュール間の信頼性を高め、将来の信頼性を高めます。 AOP は水平関係を表します。「オブジェクト」がオブジェクトのプロパティと動作をカプセル化する中空の円筒である場合、アスペクト指向のプログラミング手法は、これらの中空の円筒を細かく切り分けるようなものです。中の情報。カットされた部分はいわゆる「アスペクト」です。そして、これらの切断部分を驚異的な技術で跡形もなく復元しました。
「横断的」テクノロジーを使用して、AOP はソフトウェア システムを 2 つの部分、つまり中核的な関心事と横断的な関心事に分割します。業務処理のメインプロセスが中心的な関心事であり、それとあまり関係のない部分が横断的な関心事です。横断的な懸念事項の特徴の 1 つは、それらが中核的な懸念事項の複数の場所で発生することが多いですが、基本的にはどこでも同様であるということです。権限認証、ロギング、トランザクション処理など。 Aop の役割は、システム内のさまざまな懸念事項を分離し、中核的な懸念事項と横断的な懸念事項を分離することです。アバナードのシニア ソリューション アーキテクトであるアダム マギー氏が述べたように、AOP の中心的な考え方は、「アプリケーション内のビジネス ロジックを、それをサポートする共通サービスから分離する」ことです
。
個人的な理解: AOP はプログラミングのアイデアであり、プロジェクト全体で再利用する必要があるいくつかの機能モジュールを 1 つずつアスペクト化し、このプロジェクトでコードを繰り返し書かないようにすることです。 CBD は AOP の考え方を実装したもので、使用する必要のある機能 (いわゆるアスペクト) を 1 つずつ Behavior に記述します。このように、この Behavior を使用するだけで済みます。この動作の実行のために呼び出される、他の Behavior クラスの動作はプライベート属性です。さらに、この呼び出しメソッドはメソッド B($name, &$param) にカプセル化されています。アスペクト動作を呼び出すときは、B メソッドを実行するだけです。 (この形式は依存性注入の考え方と非常に一致しており、利点はコードの分離を実現することです)。
では、ThinkPHP2.X を使用する場合、フレームワークを変更せずに、これらの優れたプログラミングのアイデアをさらに有効に活用するにはどうすればよいでしょうか?プロジェクトを開始する前に、まずプロジェクトの全体的な計画を立てる必要があります。たとえば、プロジェクト レベルの特別なデータ検証など、いくつかの繰り返しの動作については、それをアスペクト (動作) に含めることができます。このセクションを再利用するには、
おそらく ThinkPHP 3.0 を読んだことがありますが、個人的には 3.0 と 2 に大きな違いはないと感じています。栄養素をうまく活用して、毎日のプログラミングに活用してください