長い間 PHP について何も書いていませんでしたが、今回は PHP カーネルに関する知識について話します。
運営さん曰く、説明を始める前に環境を整えましょう
環境の準備:
1. Linux 環境の場合は、ubuntu/debian を使用します。どちらのシステムでも問題ありません。
3. Webサーバーはnginxを使用し、データベースはmysqlです
PHPソースコードを用意する必要がありますが、オプションでnginxとmysqlをインストールできます
PHP ソース コードをダウンロードした後、ソース コードを解凍し、まずソース コードのディレクトリ構造を確認します。
ビルド: これには主にソースコードのコンパイルに関連するファイルが含まれます
続き: PHP 拡張機能のソース コード パス
メイン:
Zend: Zend エンジン実装ディレクトリ
pear: PHP 拡張機能とアプリケーション リポジトリ
sapi: Apache、nginx などのさまざまなサーバー抽象化レイヤー コード
TSRM: スレッドセーフなリソースマネージャー
テスト: テストコード
ソースコードを表示するには、vim+ctags を使用します。これが何であるかわからない場合は、Baidu をご自身で調べてください。
知識の準備:
PHP ソースコードには多くのマクロ定義が使用されています。始める前に、マクロに関する知識を確認しましょう。
1. Double ## これは C 言語のコネクタです。例を見てみましょう。
#define TEST(名前) hello_##name
呼び出しの結果を見てみましょう: TEST(world): hello_world
分かりますか?
2. # 記号をもう一度見てみましょう。この記号の機能は、マクロ変数の置換値の前後に二重引用符を追加することです。例を見てみましょう。
#define TEST(str) #str呼び出しを見てみましょう: printf(TEST(HELLO WORLD));結果は printf("HELLO WORLD"); です
3. #line このコマンドは現在の行番号とファイル名を変更するために使用されます
4. よく使われるマクロもいくつかありますので、今後使用する際には紹介していきます