ホームページ >バックエンド開発 >PHPチュートリアル >PHPの基礎学習
·概要:
PHP を学習する目的は、サーバーサイドの開発能力を拡張することです。また、Web 側のサーバー開発を学ぶことも良い学習と言えます。
言語学習は、基礎知識、高度な機能、標準ライブラリ学習、拡張ライブラリ学習のようなプロセスであると感じています。学習するための最良の方法は、より多くのことを実行し、より多くのコードを書くことです。
基本的な知識には、コメントと説明、変数と定数、型システム、オペレーター システム、プロセス制御、ファイルの読み取りと書き込み、配列の説明、文字列操作と正規表現、関数システム、オブジェクト指向関数、エラーと例外の制御が含まれます。
最後に、PHP についての私の感想を話させてください。構文の観点から見ると、PHP は多くの C++ 要素を借用しているため、学習するのは非常に良いものであり、少なくとも Erlang を見るよりははるかに優れています。ここで、PHP の動作原理を理解します。私は以前に単純なサーバーを作成したことがあるので、Apache/nginx がネットワーク、同期、その他の問題などの基本的な作業をすべて担当し、PHP は論理処理の処理に特化していると感じています。一部。この場合、以前にサーバーを作成するよりもはるかに簡単に感じられます。おそらく 2 つのジョブの焦点が異なるからです。
·重要なポイント:
--注記と指示:
ファイルの拡張子は通常、.php または .inc (include の略語) です。
php は HTML に埋め込むことができます。タグのスタイルは次のとおりです:
< script laanguage = 'php' & gt ;.... & lt;/script & gt;
< & gt; (ASP スタイル)。
スペースの処理: HTML と同様に、PHP もスペース文字 (キャリッジ リターン、スペース、タブ) を無視します。
コメント:
単一行: // と #。 /複数行:/ *… */メソッド。
php ステートメントも、C++ と同様に、終了マークとして; で終わります。单フォーム変数へのアクセス方法:
$ $ $ $ $
、サーバー構成に便利ですが、推奨されません。
ミディアムスタイル?$_POST['tireqty']、推奨。
冗長スタイル?$HTTP_POST_VARS['tireqty']、非推奨になりました。
Echo は出力をエコーするために使用されます。
文字列連結演算子はドット (.) です。
文字列を表すために使用される一重引用符と二重引用符は異なります。一重引用符はテキストの意味、つまり処理なしの出力(転送がほとんどない)を表し、二重引用符は文字列を処理します(転送の処理など)。
-- 変数と定数:
識別子 -- C++ の命名と同じ:
長さに制限はありませんが、長すぎることはお勧めできません
文字、数字、アンダースコアで構成されます。数字で始めることはできません。
大文字と小文字の区別がありますが、関数名は大文字と小文字が区別されません。
変数名は関数名と同じ名前にすることは強くお勧めしません。
変数名の形式は $arge で、$ 接頭辞が必要です。
定数の定義:define('TIREPRICE',100); (すべて大文字を推奨)
変数変数を使用できます: $a='feng'、$$a は $feng と同等です。
;
グループ。
単語変数の配列。
--型システム:
サポートされる型は、整数、浮動小数点数、文字列、ブール値、配列、オブジェクトです。
サポートされている特別なタイプは、NULL (値がないことなどを示す) とリソース (開いているファイル、データベース接続など、関数間で渡されるデータ構造) です。
型間の変換は、C スタイルの $a=(float)10 を使用して行われます。
同時に、組み込み関数を使用して型変換を実行できます。
文字列の場合: 一重引用符スタイルと二重引用符スタイルがあります。文字列には、対応する操作関数と演算子があります。型 組み込みの型サポート関数:
Gettype () および Settype () は変数の型をテストおよび設定できます。
関連する判断には IS _**() シリーズ関数が含まれます。 )--変数の変換。 : intval()、floatval()、strval()。
--演算子システム:
算術演算子: 加算 (+) 減算 (-) 乗算 (*) 除算 (/) および剰余 (%);
文字列演算子: ドット演算子 (.) ;
代入演算子: = および混合代入演算子 (+=、-=、*=、/=、%=、および .=);
インクリメント演算子とデクリメント演算子: 接頭辞形式と接尾辞形式を持つ C++ と同じ
引用符構文: アドレスを使用します。変数の前の文字 (&)
比較演算子: C++ (==、!=、<、<=、>、>=) と比較して、( ===、!==、<) があります。 ;>);
論理演算子: 記号 (!、&&、||) および文字形式 (and、or、xor)
ビット演算子: &、|、~、^、<<、> &gt; C++と似ています。
--フロー制御:
条件:
If ステートメント形式: if(cond){}elseif(cond){}else{};
Switch ステートメント、C++ と同じ
ループ:
while 、 for と do...while は C++ と同じです
配列の foreach ループ ステートメントもサポートします
Break と continue に加えて、exit-exit スクリプトも追加します。
置換可能な形式:
if (cond) ... endif 形式などの文字を使用します。
代替形式を使用します: if、switch、while、for および foreach
宣言を使用します。一般的に使用されますが、その中にはティックの使い方を学ぶ必要があります。
-- ファイルの読み取りと書き込み:
共通関数:
ファイルを開く: fopen()、ファイルを開くモードを選択できます。 ;
ファイルを閉じる: fclose() 関数;
読み取り文: fread(),file_get_contents(),fgets(),fgetcsv(),
readfile(),fpassthru()和file() ,fgetc();
書き込み文:fwrite(),file_put_contents ();
ファイルの削除: unlink();
制御関数:
ファイル状態判定: feof(), file_exists(), filesize()
ファイルのロック: flock();
ファイルの読み取りおよび書き込みポインター操作: rewind()、fseek() および ftell();
--配列の説明:
C++ の配列の概念とは少し異なります。 Python の辞書に似ています。
数値インデックス配列:
数値インデックスは 0 から始まり、array() 形式になります。
配列を自動的に生成する関数は
;foreach() を使用して配列をループできます - 数値インデックスと数値以外のインデックスも使用されます
foreach() の構文は foreach($array as $key => $value);
配列演算子です: + ,==,===,!=,<>,!==;
多次元配列を定義できます:
関数 sort()、asort()、 ksort()、rsort()、arsort()、および krsort();
複数桁の配列 usort() にはパラメータとしてユーザー定義の比較関数が必要です
配列をランダムに並べ替えます: shuffle() 関数。配列操作を逆にする: array_reverse () 関数;
関数 file() はテキスト配列を直接返すことができ、その後テキスト配列を直接操作できます
配列の参照: each()、current( )、reset()、end( )、next()、pos() および prev();
配列内の各要素に対して特定の関数を実行できます: array_walk();
配列統計: count()、sizeof () と array_count_values();
配列をスカラーに変換します: extract() 関数;
数値以外のインデックスの説明:
まず、定義が異なる必要があり、次に、トラバーサル方法が異なります。アクセス方法が異なるため異なります。
同時に、他の配列関数も適用できます。
-- 文字列と正規表現:
文字列関数:
書式設定: rtrim()、ltrim()、trim()、 nl2br(),printf(),sprintf(), vsprintf(),
vsprintf(), strtok(),substr();
比較: strcmp()、strcasecmp()、strnatcmp()、strlen(); matchと交換:strstr()、strchr()、strrchr()、stristr()、strpos()、strrpos()、
str_replace()ファイル;バリアント関数 require_once() および include_once() -- それらが 1 回だけ導入されるようにします
サーバー設定 auto_prepend_file および auto_append_file を使用して、ヘッダーとフッターを設定します
関数呼び出し メソッドは次のとおりです。 C++ などの他の言語の呼び出しメソッドと同じ - 非メンバー関数を参照します。
定義されていない関数を呼び出すと、エラー メッセージが表示されます
同時に、関数名には $ プレフィックスがないことに注意してください。
カスタム関数:
関数の構文を定義します: function func_name($arg1,$arg2){…} 形式。値渡し (デフォルト) と参照渡し (接頭辞 & を付け、参照セマンティクスに従う) の 2 つの方法
戻り値には return ステートメントを使用できますが、再帰は使用できません。パフォーマンス上の理由から推奨されます。
名前空間の問題:
名前空間は php で使用できます - 詳細に検討してください。
-- オブジェクト指向:
クラスとオブジェクト:
クラス定義メソッド: class classname{.. .} フォーム;
アクセス制御シンボルには public (デフォルト)、protected、private が含まれます。
クラスのインスタンス化 (オブジェクト) メソッド: $a=new classname (パラメーター) の形式
コンストラクター (__construct()) ) とデストラクター (__destruct());
オブジェクト自体を表すために $this ポインターを使用できます
2 つの関数 - アクセサーとセッターを定義できます
クラスの属性とメソッドは矢印記号 (->) です。
継承:
継承形式では、キーワード "extends" を使用して継承を示します。
多重継承をサポートしていません。多重継承の効果は次のとおりです。
継承とオーバーロードは、final キーワードによって禁止できます - クラスとメソッドの両方に適用されます。
オーバーロード - 親クラスとサブクラスのオーバーロード:
親クラスと同じ名前の関数を定義します。サブクラスは親クラスの関数をオーバーロードします
メンバー関数の呼び出しは、呼び出し元のオブジェクトの型に応じて、対応するオブジェクトを呼び出します
親クラスのオブジェクトを呼び出すメソッドは、parent:: フォームを使用します。関数が呼び出されても、オーバーロードされたメンバーが親クラス関数でも呼び出される場合は、C++ とは異なり、サブクラスのメンバーが優先されることに注意してください。
インターフェイス:
インターフェイス定義メソッド: インターフェイス InfName{...} フォーム;
インターフェイスを実装するには、キーワード "implements" フォームを使用する必要があります。
高度な関数:
クラス以前の定数を使用します。データメンバー): class Math{ const pi=3.14159} form;
静的メソッドはキーワード「static」を使用し、記号「::」を通じて呼び出されます。$this キーワードはありません。
遅延静的バインディングをサポートします。深くすることを決定します (使用されません)。
キーワード $ a = clone $ b を介してオブジェクトをコピーし、 __clone を介してコピー関数を定義します。 ()
抽象クラスを定義する方法は次のとおりです: 抽象メソッドと抽象クラス - 両方に「abstract」という接頭辞が付けられます__call() を介してクラス メソッドのオーバーロードを提供できます - 同じクラス内でオーバーロードします。 __autoload():
まだ宣言されていないクラスをインスタンス化するときに自動的に呼び出されます
主な目的は、必要なクラスの初期化に使用されるファイルをインクルードまたはリクエストすることです
イテレータとイテレータ:
イテレーターを実装するには、IteratorAggregate インターフェースを実装し、getIterator() を定義する必要があります
Iterator インターフェースを実装するには、複雑な動作を実装する必要があります。
__toString() 関数を使用して、実装;
Reflection(Reflection) API を使用します:
リフレクション テクノロジーはインスタンスからクラス構造を推論する必要があります。
API インターフェイスは $class=new ReflectionClass("empl");
-- エラーと例外:
例外:
例外メカニズムは try{…}catch(…){…} と throw の形式です。
PHP は例外用の組み込みクラスを提供します。
カスタム例外:
をカスタマイズできます。独自の例外を定義するには、Exception を継承します。
その他のエラー処理メカニズム:
例外処理メカニズムに加えて、PHP は複雑なエラー処理サポートも提供します - 詳細を検討してください
· 概要:
完了したら、さらに深く掘り下げることができます。