PHP を学ぶ (4) PHP 関数をステップバイステップで学ぶ 補足 2_PHP チュートリアル
1. スコープの問題を解決します
前のセクションでは、PHP の関数のスコープについて説明しました。クラスだけでは問題を説明できない場合は、この記事のスコープの例の方がわかりやすいかもしれません。
では、PHP 関数で外部変数にアクセスするにはどうすればよいでしょうか?
PHP にはグローバル スコープと呼ばれる概念があります。つまり、関数を使用しない場合 (将来クラスの概念が登場する予定です)、作成した変数にはページ上のどこからでもアクセスできます。では、関数本体の問題をどのように解決すればよいでしょうか?
グローバルキーワードを使用できます:
<SPAN style="COLOR: blue"><?</SPAN><SPAN style="COLOR: maroon">php </SPAN>$<SPAN style="COLOR: red">name</SPAN><SPAN style="COLOR: blue">="kym"</SPAN>; <SPAN style="COLOR: red">function Test</SPAN>() { <SPAN style="COLOR: red">global </SPAN>$<SPAN style="COLOR: red">name</SPAN>; <SPAN style="COLOR: red">echo</SPAN>($<SPAN style="COLOR: red">name</SPAN>); } <SPAN style="COLOR: red">Test</SPAN>(); <SPAN style="COLOR: blue">?> </SPAN>
この場合、$name 変数を再作成することなく、グローバル変数 $name への参照を取得するのと同じです。
PHP マニュアルには次のような言葉があります: グローバル変数を使用することは、$GLOBALS 変数に変数への参照を作成することと同じです。次に、このセマンティクスを模倣して、次のようなコードを書くことができます:
<SPAN style="COLOR: blue"><?</SPAN><SPAN style="COLOR: maroon">php </SPAN>$<SPAN style="COLOR: red">name</SPAN><SPAN style="COLOR: blue">="kym"</SPAN>; <SPAN style="COLOR: red">function Test</SPAN>() { $<SPAN style="COLOR: red">temp</SPAN><SPAN style="COLOR: blue">=&$GLOBALS["</SPAN><SPAN style="COLOR: red">name</SPAN><SPAN style="COLOR: blue">"]; echo($temp); } Test(); ?> </SPAN>
実際、これら 2 つは同等のコードです。このように変数を使用するのは面倒に思えますが、実際にはこれにより多くの副作用が回避されます。たとえば、Java と C# はオブジェクト指向言語ですが、PHP ではすべてが 1 つのページ、または複数のページに収まります。この方法を使用すると、関数の副作用 (偶発的な変更) が発生しやすくなります。
2. デフォルトパラメータ
この概念を初めて聞いたのはおそらく C++ でした。C# を学んだ後は、この概念に触れたことはありませんでしたが、今でもこの機能がとても気に入っています。
これにより、関数に対して面倒なオーバーロードされた関数を大量に記述する必要がなくなります。
最も単純な例を書いてください:
<SPAN style="COLOR: blue"><?</SPAN><SPAN style="COLOR: maroon">php </SPAN><SPAN style="COLOR: red">function Test</SPAN>($<SPAN style="COLOR: red">name</SPAN><SPAN style="COLOR: blue">="kym"</SPAN>) { <SPAN style="COLOR: red">echo</SPAN>($<SPAN style="COLOR: red">name</SPAN>); } <SPAN style="COLOR: red">Test</SPAN>(); <SPAN style="COLOR: red">Test</SPAN>(<SPAN style="COLOR: blue">"others"</SPAN>); <SPAN style="COLOR: blue">?> </SPAN>
オーバーロードされた関数を記述する必要はもうありませんか?
ただし、ここで注意すべきことが 2 つあります:
A. パラメータのデフォルト値を設定する場合、最も単純な定数のみを設定でき、複雑な式を含めることはできません。
B. デフォルト値が必要なパラメータは最後に配置する必要があります。これは、C# の変数パラメーターに似ています。
3. 可変パラメータ
C# には、変数パラメーターと呼ばれる概念があります。簡単な例を書いてみましょう:
<SPAN style="COLOR: blue">protected void </SPAN>LinkButton1_Click(<SPAN style="COLOR: blue">object </SPAN>sender, <SPAN style="COLOR: #2b91af">EventArgs </SPAN>e) { Response.Write(GetSum(1, 2, 3, 4, 5)); } <SPAN style="COLOR: blue">public int </SPAN>GetSum(<SPAN style="COLOR: blue">params int</SPAN>[] elements) { <SPAN style="COLOR: blue">int </SPAN>sum = 0; <SPAN style="COLOR: blue">for </SPAN>(<SPAN style="COLOR: blue">int </SPAN>i = 0; i < elements.Length; i++) { sum += elements[i]; } <SPAN style="COLOR: blue">return </SPAN>sum; }
例を書く前に、まず変数パラメーターに関連する 3 つの関数を紹介します。
func_get_args() は関数のすべてのパラメータの配列を返します
func_get_arg() はパラメータから特定の引数を返します
func_num_args() はパラメータの数を返します。
それでは、C# バージョンに対応する PHP バージョンを書きましょう。
りー
4. 変数関数
なぜこの名前に変換する必要があるのかわかりません。実際には変数の名前に基づいて対応する関数を呼び出します。
以下に示すように、は JS のこの eval に非常によく似ています:
<SPAN style="COLOR: blue"><?</SPAN><SPAN style="COLOR: maroon">php </SPAN><SPAN style="COLOR: red">function GetSum</SPAN>() { <SPAN style="COLOR: red">if</SPAN>(<SPAN style="COLOR: red">func_num_args</SPAN>()<SPAN style="COLOR: blue">=</SPAN>=0) { <SPAN style="COLOR: red">return </SPAN>0; } $<SPAN style="COLOR: red">sum</SPAN><SPAN style="COLOR: blue">=0; </SPAN><SPAN style="COLOR: red">for</SPAN>($<SPAN style="COLOR: red">i</SPAN><SPAN style="COLOR: blue">=0;$i<</SPAN><SPAN style="COLOR: maroon">func_num_args</SPAN>();$<SPAN style="COLOR: red">i</SPAN>++) { $<SPAN style="COLOR: red">sum</SPAN>+<SPAN style="COLOR: blue">=func_get_arg($i); </SPAN>} <SPAN style="COLOR: red">return </SPAN>$<SPAN style="COLOR: red">sum</SPAN>; } <SPAN style="COLOR: red">echo</SPAN>(<SPAN style="COLOR: red">GetSum</SPAN>(1,2,3,4)); ?<SPAN style="COLOR: blue">> </SPAN>
これは、関数名を渡して、対応する関数を実行します。 PHP でも、実際には同じであり、より単純です。
りー 。
ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます
