PHP と Mysql Web アプリケーション開発のコア技術 第 1 回 PHP の基礎-3 コードの整理と再利用 2_PHP チュートリアル
この章では、コードを再利用するために呼び出すことができる関数の作成
と、スクリプトのさまざまな部分での変数やデータの操作
について学びました。関数 他のファイルに保存され、これらのファイルはスクリプトに含まれます
3.1 基本的なコードの再利用: 関数
3.1.1 関数の定義と呼び出し
キーワード function は、これが関数であることを php に伝え、その後に関数が続きます。名前 (文字、数字、文字、またはアンダースコアを使用できます)
関数名の後にパラメーター リストが続き、その後に関数本体が続きます。他の言語で同じ名前で異なるパラメーター リストを持つ関数の場合、PHP はこの機能をサポートしません。
{
echo "I am booo_spooky. この名前は問題ありません!
n"; }
function ____333434343434334343()
{
echo <<
読めない関数名ですが、
DONEです。
//
// この次の関数名前が生成します:
//
// 解析エラー: 構文エラー、予期しない T_LNUMBER、
//
// /home/httpd/www/phpwebapps/src/chapter03/playing.php
// 行 55 に T_STRING が必要です
//
// 関数名は数字で始めることはできません
//
function 234letters()
{
echo "I am not valid
n";
//
// 拡張文字は使用できます
//
function grüß_dich()
{
echo "拡張文字は問題ありませんが、注意してください!
n";
}
//
// 本当に拡張文字も問題ありません
// ただし、おそらく Unicode 形式で保存する必要があります。
// UTF-8 など (第 5 章を参照)
//
function 日本語のファンクション()
{
echo <<
特に注意してください (第 5 章を参照)
3.1.2 関数にパラメータを渡す
パラメータを渡すには。関数に対して、関数を呼び出すときは、パラメータ値を括弧で囲み、カンマで区切る必要があります。渡される各パラメータには、任意の有効な式を指定できます。変数、定数値、演算子の結果、または関数呼び出しの場合もあります。
コードをコピー
function my_new_function($param1, $param2, $param3, $param4)
$param1: $param1
$param3: $param3
param4 < br/> }
//
$a = 54; my_new_function($ userName, 6.22e23, pi(), $a or $b);
?>
参照渡し: デフォルトでは、変数の値のみが関数に渡されます。したがって、このパラメーターまたは変数への変更は、関数内でローカルでのみ有効です
コードをコピーします
コードは次のとおりです。
$x = 10
echo "$x is: $x
n";
function change_parameter_value($param1)
{
$param1 = 20;
}
n";
?>
コードをコピーします
コードは次のとおりです:
function increment_variable(&$increment_me)
{
{
$increment_me += 1;
}
$x = 20.5;
echo "$x は: $x
n" // 20.5 を出力します。 (&$x );
n"; // デフォルトの引数値と呼ばれる 21.5 コードをコピーします以下の通り:
function Perform_sort($arrayData, $param2 = "qsort")
{
switch ($param)
{
case "qsort":
qsort($arrayData); ":
insertion_sort($arrayData);
break;
default:
bubble_sort($arrayData);
break;
}
}
?>
パラメータの可変数:
n" }
n ";
print_parameter_values(1, 2, 3, "fish");
print_parameter_values();
?>
3.1.3 関数からの戻り値
その他の言語終了する前に一部のコードのみを実行する コードを実行して呼び出し元に値を返す関数であるサブルーチンとは異なり、すべての PHP 関数は呼び出し元に戻るときに値が関連付けられています。明示的な戻り値のない関数の場合、戻り値は null です
コードをコピー
コードは次のとおりです:
function dos_nothing()
{
}
コードをコピーします
コードは次のとおりです:
function is_even_number($number)
if (($number % 2) = = 0)
return TRUE;
コードをコピーします
コードは次のとおりです:
< ;?php
function get_user_name($userid)
{
//
//ユーザーに関するすべての情報
//
3.1 .4 関数内の変数スコープ
関数レベルの変数:
それらは宣言された関数内で有効であり、その値は記憶されません関数呼び出しの間
コードをコピーします
コードは次のとおりです:
php
$name = "Fatima"
echo "$name: $name
n"; function set_name($new_name)
echo "$name: $name
n";
$name = $new_name;
set_name("Giorgio"); br/>n";
?>
コードをコピーします
コードは次のとおりです:
function increment_me()
{
//値は 1 回だけ 10 に設定されます。 ?>
スクリプト内で宣言された変数 (「グローバル変数」)
コードをコピーします
n";
echo "$name: $name
n ";
$name = $new_name;
}
set_name( "ジョルジオ");
エコー "$name: $name>n";
l 出力結果:
$name: Fatima
$name:
$name: Fatima
内部群関数にグロバが追加された場合、出力結果
$name: Fatima
$name: Fatima
$name: Giorgio
3.1.5 関数のスコープと可用性
3.1.6 関数を変数として使用する
function Log_to_File($message)
{
// openファイルを作成してメッセージを書き込みます
}
function Log_to_Browser($message)
{
// echo または print 関数を使用して出力します
}
function Log_to_Network($message)
{
// サーバーに接続してメッセージを印刷します
}
//
// 現在デバッグ中なので、画面に書き込むだけです
//
$log_type = "Log_to_Browser"
//
// これで、残りのコード全体で
// を呼び出すことができます。 $log_type(message) を変更するには、単に
// 上記の変数の割り当てを変更します!
//
$log_type("beginning debug Output"); ただし、PHP には、これを実行できない言語構造が多数含まれています。この構造の明白な例は、echo、print、var_dump、print_r、isset、unset、is_null is_type です
3.2 中間コードの再利用: ファイルの使用と組み込み
3.2.1 コードをファイルに整理する
一貫したインターフェイスを生成します
コードをコピーします
return ($radius * pi() * pi())
}
functioncircle_move_location(&$y, & $x , $deltax, $deltay)
{
$x += $deltax;
$y += $deltay;
}
function compute_circumference_of_circle($radius)
{
return array("Circumference" => 2 * $radius * pi());
}
?>
これらの関数を一貫した名前、パラメーターの順序、戻り値で使用すると、コードの失敗や欠陥の可能性を大幅に減らすことができます。
コードをコピーします
// "X" = > pi();
function Circles_compute_circumference($circle)
{
return 2 * $circle["Radius"] * pi()
}
// $circle は BY REFERENCE で渡されます変更されました!!!
関数 Circles_move_circle(&$circle, $deltax, $deltay)
$circle["X"] += $deltax;
$circle["Y"] += $deltay; >
3.2 .2 ファイル名と場所の選択
Web ユーザーが .inc ファイルを開けないようにするには、2 つのメカニズムを使用します。まず、構成するドキュメント ディレクトリ ツリーで、Web サーバーが次のことを行うようにします。ユーザーに参照やロードを許可しないでください
第 16 章 Web アプリケーションの保護で説明されているこれらの操作を実行してから、ユーザーが .php および .html ファイルを参照できるようにブラウザを設定しますが、.inc ファイルは参照できないようにします
この問題を防ぐ 2 番目の方法は、コードをドキュメント ツリーに配置したり、他のディレクトリに保存したりせず、コード内でこのディレクトリを明示的に参照して、常にこのディレクトリを参照するように PHP に指示することです
3.2.3 ライブラリ ファイルを次の場所に含めるスクリプト
include と require、この 2 つの違いは、require はファイルが見つからない場合にエラーを出力するのに対し、include は警告を出力することです。
コードをコピーします
require('i_dont_exit.inc');
include と require でファイルを探します
明示的なパスを指定できます:
require("/home/httpd/lib/frontend/table_gen.inc');
require('http://www.cnblogs.com/ lib /datafuncs.inc');
require(d:webappslibsdataconnetions.inc');
明示的なパスが指定されていない場合、php は現在のディレクトリに含まれるファイルを探し、php 内の include_path 設定を探します。 .ini ファイルをディレクトリから取り出します。
Windows では、 include_path=".;c:phpinclude;d:webappslibs" になります。
include と require の内容はすべて含まれています。 script タグ内の は、一般的な php スクリプト処理と同様です。
リスト 3-1 とリスト 3-2 は、インクルードするための php スクリプトと単純なファイルを示します。
リスト 3-1
3.2.4 ページのテンプレート化にインクルードを使用する
$message = "こんにちは、パードナー";
include( 'printmessage.inc');