2010-11-22 10 views
2

私はPHPの一部とCの部分であるアプリケーションを書いています.2つの部分はソケット経由で話します。 IPCのプロトコルの一環として、アプリは「メッセージタイプ」バイトに依存します。例えば、データブロックの最初のバイトが1であれば、その後、残りの部分は表示システム情報のようなものを意味し、などphpとcの間の共有設定ファイル

Cヘッダファイルには、私は

#define GET_SYSTEM_INFO 0x1 
#define SET_SECURITY_LEVEL 0x2 
etc 
...のようなこれらのメッセージタイプを定義することができます

PHPの部分とCのアプリケーションの間で共有される1つのファイルにこれらの値を定義できるのであれば、本当に好きです。そうすることで、彼らは共通の設定から取り組んでいます。ヘッダーファイルである必要はありませんが、両方の技術が共通のファイルを解析するための簡単なメカニズムがあるのだろうかと思いました。

ありがとうございます。

+0

構成ファイルは一般に、値を変更できることを意味します。これらをCヘッダーファイルに含めると、値がプログラムにコンパイルされます。これらの値を動的に構成しますか?あるいは、それらは単に魔法の数字ですか、あなたはそれらを両方とも定義するのが簡単な場所を望んでいますか? – Falmarri

+0

後者です。マジックナンバーと共有するためにそれらを定義するための簡単な場所。 – DoranKatt

答えて

2

あなたが実際に開発用にやりたいことがあり、エンドユーザがプロトコルの内部にアクセスする必要はないので、PHPファイルを解析してCのインクルードを作成するか、ビルドスクリプトの反対側にあります。

2

私は以前はCで作業したことはありませんが、PHPのようなINIファイルを簡単に解析できると仮定します。

PHPのparse_ini_file()を参照してください。

1

これは、Google Protocol BuffersApache Thriftのようなプロジェクトが解決しようとする問題の種類です。

しかし、これを自分でやりたい場合は、2つの方法があります。 1つは、ある記述からコード(あなたの例では#define)を生成することです。もう1つは、実行時にメッセージタイプを判別することです(これは私が望んでいないと思います)。

いずれにせよ、何らかの説明書式で解決する必要があります。たとえば、INIファイル、JSONファイル、YAMLファイルなどを解析する小さなPHPスクリプトを作成し、Cプログラムを含むテンプレートを取り出し、空白を埋めて最終的なCソースファイルを出力することができます。これはビルド環境に少し依存しますが、通常はコマンドラインツールをビルドプロセスに統合するための小さなステップです。

関連する問題