The concept of Delegate (1)
デリゲートは、 XOOPS Cube
における新しいフィーチャーです。それは、統一的なコールバック手続きということになります。開発者は関数と同様にそれを使うことができます。そして、それは、交換可能性をもたらします。しかし、私達は
XOOPS Cube 2.1 RC
バージョンまでに Delegate
に関するいくらかのクラスの設計を変える予定です。この計画は、このエントリシリーズのサンプルソースコードに関する問題を誘発します。
デリゲートは、C#、D言語
、及び、いくらかのプログラミング言語のが持つフィーチャーです。それは、ファンクションポインタのようなものです。ご存じのように、プログラムは、コンピュータの原始時代からファンクションポインタのようなものを使用してきました。それは、アドレスレジスタによって指定されるアドレスへのジャンプです。
本来であれば、 XOOPS Cube
が、 PHP
でコールバックのための手続きを定義する必要はありません。PHP
は、コールバックのための関数を持っており、そして、プログラマはいくつかの方法をコールバックに使うことができます。しかしながら、プログラマが彼のすべての関数にプラグイン・メカニズムの実装を試みるのであれば、彼はプログラミングと説明に多大な時間と努力を払わなければなりません。
プログラマは、プラグインファイルをロードし、関数をチェックし、コールバックを実行するプログラムを組まなければなりません。プラグイン・メカニズムを持ついくらかの
XOOPS
モジュールを見てください。これらのモジュールのコールバックのための方法は、すべて異なります。そして、もし、コールバックについて設計されていないモジュールへプラグイン・メカニズムを付け加えるならば、それは大変な作業になるでしょう。
デリゲートはは、統一されたコールバック手続きによってこれらの問題を解決します :
- プログラマは、彼の関数を C# と同様に、デリゲートに変更できます。
- プラグイン開発者は、 XCube_Delegate
メカニズムのみ学習すれば大丈夫です。
-
プラグイン・ファイルをロードすることについて考える必要はありません。(プリロードメカニズムを思い出してください)
モジュール開発者は、最初にコールバックなしでプログラムを完成させることができます。次に、リファクタリング・ツール、もしくは、手動によって通常の関数をデリゲートに変更します。この2ステップによって、交換可能なモジュールが、今まさに完成しました
!
もし、コアがデリゲートとしてのトラックバック関数を持っているのであれば、ユーザーは、それをモジュール、または、
1 File Hackings
が持つ他の関数と交換し得ます。私は、デリゲートなしの XOOPS Cube
を想像できません。デリゲートは、コア開発、モジュール開発、カスタマイジングにとって便利です。