C開発者向けのPHP

PHPを考える最も簡単な方法は、HTMLドキュメントに埋め込むことができる解釈されたCです。言語自体はCによく似ていますが、型指定されていない変数、多数のWeb固有のライブラリが組み込まれており、すべてがお気に入りのWebサーバーに直接接続されている点が異なります。

ステートメントと関数定義の構文は、変数の前に常に$が付き、関数が個別のプロトタイプを必要としないことを除いて、よく知っている必要があります。

ここでは、PHPとCのいくつかの類似点と相違点を説明します。

類似点

  • Syntax−大まかに言えば、PHP構文はCと同じです。コードは空白に依存せず、ステートメントはセミコロンで終了し、関数呼び出しは同じ構造(my_function(expression1、expression2))を持ち、中括弧({および})はステートメントをブロック。PHPは、CおよびC ++スタイルのコメント(/ * * /および//)と、Perlおよびシェルスクリプトスタイル(#)をサポートしています。

  • Operators −代入演算子(=、+ =、* =など)、ブール演算子(&&、|| 、!)、比較演算子(<、>、<=、> =、==、!=) 、および基本的な算術演算子(+、-、*、/、%)はすべて、PHPでもCと同じように動作します。

  • Control structures−基本的な制御構造(if、switch、while、for)は、breakとcontinueのサポートを含め、Cの場合と同じように動作します。注目すべき違いの1つは、PHPのスイッチが文字列をケース識別子として受け入れることができることです。

  • Function names −ドキュメントをよく読むと、C関数と同じように見える多くの関数名が表示されます。

違い

  • Dollar signs−すべての変数は先頭に$で示されます。変数は、割り当ての前に宣言する必要はなく、固有の型もありません。

  • Types− PHPには、整数(Cのlongに対応)とdouble(Cのdoubleに対応)の2つの数値タイプしかありません。文字列の長さは任意です。個別の文字タイプはありません。

  • Type conversion−型はコンパイル時にチェックされず、型エラーは通常実行時にも発生しません。代わりに、変数と値は必要に応じてタイプ間で自動的に変換されます。

  • Arrays−配列の構文は、表面的にはCの配列構文と似ていますが、実装方法がまったく異なります。これらは実際には連想配列またはハッシュであり、インデックスは数値または文字列のいずれかです。事前に宣言または割り当てる必要はありません。

  • No structure type− PHPには構造がありません。これは、配列とオブジェクトタイプが一緒になって不要になるためです。PHP配列の要素は、一貫したタイプである必要はありません。

  • No pointers−テープレス変数も同様の役割を果たしますが、PHPで使用できるポインターはありません。PHPは変数参照をサポートしています。関数名を変数に格納し、リテラル名ではなく変数を使用して呼び出すことができるという点で、関数ポインターをある程度エミュレートすることもできます。

  • No prototypes −定義が現在のコードファイルまたはインクルードファイルのどこかにある限り、関数は実装を定義する前に宣言する必要はありません。

  • Memory management− PHPエンジンは事実上ガベージコレクションされた環境(参照カウント)であり、小さなスクリプトでは割り当て解除を行う必要はありません。新しい文字列やオブジェクトインスタンスなど、新しい構造を自由に割り当てる必要があります。PHP5では、オブジェクトのデストラクタを定義することは可能ですが、解放または削除はありません。デストラクタは、オブジェクトへの最後の参照がなくなると、メモリが再利用される前に呼び出されます。

  • Compilation and linking −PHPスクリプト用の個別のコンパイル手順はありません。

  • Permissiveness−一般的な問題として、PHPはCよりも寛容であり(特にその型システムにおいて)、新しい種類の間違いを回避することができます。予期しない結果は、エラーよりも一般的です。