เป็นไปไม่ได้ที่จะจำลอง ASP.NET ด้วย PHP โดยเฉพาะอย่างยิ่งสำหรับภาษาไดนามิกเช่น PHP ที่มีการรองรับเชิงวัตถุที่ไม่สมบูรณ์ เมื่อฉันพูดว่าการจำลองด้วยคำเหล่านี้ ฉันหมายถึงว่า ASP สามารถเข้าใจได้จากตัวอย่างนี้ กลไกการทำงานของ .net (ย้ำอีกครั้งว่าเป็นเพียงโมเดล) โค้ดนั้นง่ายมาก ไม่ต้องอธิบายให้ยุ่งยาก การทดสอบนี้รันบน win2000, iis5, php 4.4.0 ถึง
page.php
<?php
/************************************************* ***** ******************************
*คลาสฟังก์ชัน Sinoprise
*ลิขสิทธิ์(c):2006 Sinoprise Technology Lab
-
*ชื่อยูนิต: page.php
*ฟังก์ชั่น:
*ลัง:Shuguang Yin 2006-07-15
************************************************** * *********************************/
คลาส SFC_Page
-
//ตัวแปรสภาพแวดล้อม
/*var $เซิร์ฟเวอร์;
var $เซสชัน;
var $QueryString;
var $โพสต์;
var $คุกกี้;
var $Files;
var $Env;*/
//คุณสมบัติการควบคุมเพจ
var $EnableViewState;
//คุณสมบัติของเพจ
var $CharSet;//ชุดอักขระของเพจ
var $PageTitle; //ชื่อเรื่องของเพจ
var $PageStyle;//รูปแบบของเพจ
ฟังก์ชั่น SFC_Page()
-
/*if (strcmp(substr(PHP_VERSION,0,1),4)>=0){
$เซิร์ฟเวอร์ = $_SERVER;
$เซสชั่น = $_เซสชั่น;
$QueryString = $_GET;
$โพสต์ = $_POST;
$คุกกี้ = $_คุกกี้;
$ไฟล์ = $_FILES;
$Env = $_ENV;
}อื่น{
ทั่วโลก $HTTP_SERVER_VARS,$HTTP_GET_VARS,$HTTP_POST_VARS,$HTTP_COOKIE_VARS,$HTTP_POST_FILES;
ทั่วโลก $HTTP_ENV_VARS,$HTTP_SESSION_VARS;
$เซิร์ฟเวอร์ = $HTTP_SERVER_VARS;
$เซสชัน = $HTTP_SESSION_VARS;
$QueryString = $HTTP_GET_VARS;
$โพสต์ = $HTTP_POST_VARS;
$คุกกี้ = $HTTP_COOKIE_VARS;
$ไฟล์ = $HTTP_POST_FILES;
$Env = $HTTP_ENV_VARS;
-
$นี่->EnableViewState = false;
-
//เกิดขึ้นก่อนที่สถานะเซิร์ฟเวอร์จะถูกกู้คืน
functionPageInit()
-
-
//เกิดขึ้นหลังจากสถานะเซิร์ฟเวอร์ถูกกู้คืน แต่ก่อนเหตุการณ์ฝั่งเซิร์ฟเวอร์
ฟังก์ชั่นโหลดหน้า()
-
-
//เกิดขึ้นหลังจากเหตุการณ์ฝั่งเซิร์ฟเวอร์เริ่มทำงาน แต่ก่อนที่จะมีการสร้างสิ่งใดๆ
ฟังก์ชั่น PagePreRender()
-
-
//เกิดขึ้นเมื่อเพจถูกสร้างขึ้น
functionPageRender()
-
-
//เกิดขึ้นหลังจากสร้างเว็บเพจแล้ว
ฟังก์ชั่น PageUnLoad()
-
-
//แสดงเอาท์พุต
ฟังก์ชั่นการแสดงผล()
-
$นี่->PageInit();
ถ้า ($นี่->EnableViewState){
$นี่->DeCodeViewState();
-
$นี่->โหลดหน้า();
$นี่->PagePreRender();
echo "<html><title>".$this->ชื่อหน้า"</title>";
echo "<META http-equiv=Content-Type content="text/html; charset=".$this->CharSet"">";
echo "<body ".$this->PageStyle.">";
echo "<ชื่อฟอร์ม="SFC_WebForm" id="SFC_WebForm" method="post" action="".$_SERVER['PHP_SELF']"">";
$นี่->PageRender();
ถ้า ($นี่->EnableViewState){
$นี่->EnCodeViewState();
-
เสียงสะท้อน "</form></body></html>";
$นี่->PageUnLoad();
-
//พิจารณาว่าเป็นครั้งแรกที่เปิดหรือโพสต์
ฟังก์ชัน IsPostBack()
-
-
//เข้ารหัส ViewState
ฟังก์ชัน EnCodeViewState()
-
echo "<ประเภทอินพุต="hidden" name="SFC_ViewState" id="SFC_ViewState" ";
echo "Value="".base64_encode(serialize($this)).""";
เสียงสะท้อน ">";
-
//ถอดรหัส ViewState
ฟังก์ชั่น DeCodeViewState()
-
ถ้า (isset($_POST['SFC_ViewState'])){
$this = ยกเลิกการซีเรียลไลซ์(base64_decode($_POST['SFC_ViewState']));
-
-
-
-
ไฟล์เพจ php.php
<?
need_once('page.php');
คลาส PhpTest ขยาย SFC_Page
-
var $conut;
ฟังก์ชั่นPhpTest()
-
-
//เกิดขึ้นก่อนที่สถานะเซิร์ฟเวอร์จะถูกกู้คืน
functionPageInit()
-
-
//เกิดขึ้นหลังจากสถานะเซิร์ฟเวอร์ถูกกู้คืน แต่ก่อนเหตุการณ์ฝั่งเซิร์ฟเวอร์
ฟังก์ชั่นโหลดหน้า()
-
-
//เกิดขึ้นหลังจากเหตุการณ์ฝั่งเซิร์ฟเวอร์เริ่มทำงาน แต่ก่อนที่จะมีการสร้างสิ่งใดๆ
ฟังก์ชั่น PagePreRender()
-
-
//เกิดขึ้นเมื่อเพจถูกสร้างขึ้น
functionPageRender()
-
echo ++$this->conut;
//สะท้อนอนุกรม($นี้);
เสียงสะท้อน "<br>";
echo "<input type=submit value="OOKK" name=hello>";
-
//เกิดขึ้นหลังจากสร้างเว็บเพจแล้ว
ฟังก์ชั่น PageUnLoad()
-
-
-
$cls = PhpTest ใหม่();
$cls->CharSet="gb2312";
$cls->PageTitle="ชื่อเพจ";
$cls->EnableViewState=true;
$cls->จอแสดงผล();
?>
แทร็กแบ็ค: http://tb.blog.csdn.net/TrackBack.aspx?PostId=932084