paip.PHP-asp—jsp はイベントメカニズムを実装する WEBFORM スタイルの開発
はじめに...1
CODE ビハインドコード分離... 1
ページ制御...1
フォームの実装…2
状態VIEWSTATE保存を実装...2
Page_Ini イベントと Page_Load イベント... 3
button1_clickイベントを実装...4
button2_clickイベントを実装...4
注: webform.CodeFile.php ソース コード... 5
はじめに
asp.net は、イベント メカニズムに基づいた理解しやすい WEBFORM スタイルで開発されており、MVC メソッドよりも開発効率がはるかに速いことは誰もが知っています。
CODE ビハインドコード分離
コード分離を実現する必要がある場合は、MVC に加えてコードビハインド技術を使用することもできます。MVC よりも簡単で、開発効率が高く、モジュール化とコンポーネント化も簡単に実現できます。私の場合、2 つのページを実装しました。1 つは webform.php という名前のインターフェイス HTML コード用で、もう 1 つは webform.CodeFile.php という名前のコード用です
CODE Behind を実装するには、webform.php の最初の行に次のコードを追加します。
ページコントロール
ASPで。 NET では、HTML コントロールがサーバー側で参照できることを示すために RUNAT="SERVER" を使用します。PHP では、これを実現するための回避策が必要です。
ラベルコントロール:
テキストボックスコントロール:
フォームを実装する
ここでは、LABLE、TEXTBOX コントロール、および 2 つのボタン コントロールが必要です...私たちの要件は、最初のボタンがクリックされたときに、LABLE と TEXTBOX の値が button1 click…に設定されることです。
2番目のボタンをクリックすると、LABLEの値をTEXTBOXの入力値に設定します
全体のコードは次のとおりです
状態VIEWSTATE保存を実現
CODE Behind ファイル webform.CodeFile.php に、フロントエンド インターフェイス コントロールの状態を保存するコードを記述します。 。インターフェースが送信されて返されるとき、コントロール値はすべて入っています...
//制御ステータスの保持、ビューステート管理
viewstate();
//__ビューステート
関数 viewstate()
{
foreach ($_REQUEST as $color){
$key=key($_REQUEST);
$controlName=$key."_Text";
エコー($ key。 "---"。$ color。 "< br>");
グローバル $$controlName;
次($_REQUEST);
}
}
Page_Ini イベントと Page_Load イベント
このフォームに初めてアクセスすると、Page_Ini イベントがトリガーされ、このページにアクセスするたびに、Page_Load イベントが常にトリガーされます。
//ページイベント登録
eventReg4Page();
関数 Page_Ini()
echo "ページiniイベント";
グローバル $Label1_Text;
$Label1_Text=" Page_Ini クリック";
グローバル $TextBox1_Text;
$TextBox1_Text=" Page_Ini クリック";
}
関数 Page_Load()
{
echo "ページ読み込みイベント";
}
button1_clickイベントを実装します
//コントロールイベント登録
eventReg("Button1",Button1_Click);
//ボタンコントロールButton1のクリックイベント
関数 Button1_Click()
{
グローバル $TextBox1_Text;
$TextBox1_Text=" button1 クリック";
グローバル $Label1_Text;
$Label1_Text=" button1 クリック";
}
//イベント登録
関数eventReg($controlName,$controlEvent)
{
if($_POST[$controlName])
$controlEvent();
}
button2_clickイベントを実装します
//ボタンコントロールButton2のクリックイベント
関数 Button2_Click()
{
グローバル $TextBox1_Text;
// $TextBox1_Text=" button2 click";
グローバル $Label1_Text;
$Label1_Text=$TextBox1_Text;
}
注: webform.CodeFile.php ソース コード
//制御ステータスの保持、ビューステート管理
viewstate();
//コントロールイベント登録
eventReg("Button1",Button1_Click);
eventReg("Button2",Button2_Click);
//ページイベント登録
eventReg4Page();
関数 Page_Ini()
{
echo "ページiniイベント";
グローバル $Label1_Text;
$Label1_Text=" Page_Ini クリック";
グローバル $TextBox1_Text;
$TextBox1_Text=" Page_Ini クリック";
}
関数 Page_Load()
{
echo "ページ読み込みイベント";
}
//ボタンコントロールButton1のクリックイベント
関数 Button1_Click()
{
グローバル $TextBox1_Text;
$TextBox1_Text=" button1 クリック";
グローバル $Label1_Text;
$Label1_Text=" button1 クリック";
}
//ボタンコントロールButton2のクリックイベント
関数 Button2_Click()
{
グローバル $TextBox1_Text;
// $TextBox1_Text=" button2 click";
グローバル $Label1_Text;
$Label1_Text=$TextBox1_Text;
}
//-----------------以下の関数をパブリック関数として含めることができます------
//イベント登録
関数eventReg($controlName,$controlEvent)
{
if($_POST[$controlName])
$controlEvent();
}
//ページイベント登録
関数eventReg4Page()
{
if(!$_POST)
{
if(function_exists("Page_Ini"))
call_user_func("Page_Ini");
}
//Page_Loadイベントを登録します
if(function_exists("Page_load"))
call_user_func("Page_load");
}
//__ビューステート
関数 viewstate()
{
foreach ($_REQUEST as $color){
$key=key($_REQUEST);
$controlName=$key."_Text";
エコー($ key。 "---"。$ color。 "< br>");
グローバル $$controlName;
_
次($_REQUEST);}
}
?>