PHP カスタム関数の仕組みと構造化プログラミングの概要

伊谢尔伦
リリース: 2023-03-07 18:18:01
オリジナル
2297 人が閲覧しました

関数が呼び出されたときのみ、関数内のコード ステートメントが実行され、その目的はいくつかの特定のタスクを完了することです。関数の実行後、制御は関数が呼び出された場所に戻り、関数は戻り値の形式でプログラムに情報を返すことができます。プログラム内で関数を使用すると、構造化プログラミングを行うことができます。構造化プログラミングでは、各タスクは独立したプログラム コードを使用して部分的に完了します。関数は、この「独立した Cheng Xun コード セグメント 」を正式に実装する最も理想的な方法であるため、関数と構造化プログラミングの関係は非常に密接です。構造化プログラミングは、主に次のような独自の理由で優れています 2 つの重要な理由:

1. 複雑なプログラミングの問題が複数のより小さく単純なタスクに分割されるため、構造化プログラムは作成が容易です。各タスクは関数によって実行され、関数内のコードと変数はプログラムの残りの部分から独立しています。一度に 1 つの単純なタスクに取り組むことで、プログラミングがより速くなります。

2. 構造化されたプログラムはデバッグが簡単です。プログラム内に正しく実行されないコードがある場合、構造化設計により、問題を特定の関数などの特定の 1 つのコード部分に絞り込むことができます。この方法では、上から下、左から右に段階的に進めるだけで、エラーをデバッグして修正することがより便利になります。

構造化プログラミングの大きな利点は、時間を節約できることです。特定のタスクを実行する関数を 1 つのプログラムで作成すると、同じタスクを実行する必要がある別のプログラムでその関数を使用できます。プログラムで多少異なるタスクが必要な場合でも、既存の関数を書き直すよりも変更する方が簡単です。考えてみてください。echo() と var_dump() をよく使用しますが、最初にプログラムの機能を確認し、計画を立てる必要があります。計画には、プログラムが実行する特定のタスクをすべてリストする必要があります。次に、関数を使用して特定の各タスクを記述し、メイン プログラムの実行順序で各タスク関数を呼び出して、完全な構造化プログラムを形成します。以下の図に、3 つの関数を含むプログラムを示します。各関数は特定のタスクを実行し、メイン プログラムで 1 回または複数回呼び出すことができます。関数が呼び出されるたびに、制御がその関数に渡されます。関数が実行されると、制御は関数が呼び出された場所に戻ります。 PHP は典型的な動的言語実行プロセスを実装します。コードの一部を取得した後、字句解析、構文解析が行われます。この段階の後、ソース プログラムは命令 (オペコード) に変換され、ZEND 仮想マシンがこれらの命令を順番に実行して操作を完了します。 Php 自体は C で実装されているため、最終的に呼び出される関数はすべて C の関数です。実際には、PHP は C で開発されたソフトウェアと考えることができます。上記の説明から、PHP での関数の実行は呼び出し用のオペコードにも変換されることがわかります。各関数呼び出しは実際に 1 つ以上の命令を実行します。

各関数について、zend は次のデータ構造で記述されます

PHP カスタム関数の仕組みと構造化プログラミングの概要

typedef union _zend_function { 
zend_uchar type; /* MUST be the first element of this struct! */ 
struct { 
zend_uchar type; /* never used */ 
char *function_name; 
zend_class_entry *scope; 
zend_uint fn_flags; 
union _zend_function *prototype; 
zend_uint num_args; 
zend_uint required_num_args; 
zend_arg_info *arg_info; 
zend_bool pass_rest_by_reference; 
unsigned char return_reference; 
} common;

zend_op_array op_array; 
zend_internal_function internal_function; 
} zend_function;

typedef struct _zend_function_state { 
HashTable *function_symbol_table; 
zend_function *function; 
void *reserved[ZEND_MAX_RESERVED_RESOURCES]; 
} zend_function_state;
ログイン後にコピー

type は関数のタイプを示します: ユーザー関数、組み込み関数、オーバーロード関数。 Commonには、関数名、パラメータ情報、関数フラグ(通常関数、静的メソッド、抽象メソッド)などの関数の基本情報が含まれます。また、ユーザ関数については、後述する内部変数などを記録した関数シンボルテーブルもあります。 Zend は、大規模なハッシュ テーブルであるグローバル function_table を維持します。関数が呼び出されると、まず関数名に基づいてテーブルから対応する zend_function が検索されます。関数呼び出しを行うとき、仮想マシンは関数の種類に基づいて呼び出し方法を決定します。関数の種類が異なれば、実行原理も異なります。

【おすすめ関連チュートリアル】

1.「php.cn Dugu Jiijian (4) - PHPビデオチュートリアル

2.

PHPプログラミングの入門からマスターまでの完全なビデオチュートリアルセット

3. .

php実践的なビデオチュートリアル

以上がPHP カスタム関数の仕組みと構造化プログラミングの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート