用php模擬asp.net是不大可能的,特別是對於php這樣的對面向對象支持不完整的動態語言來講,更是很大的困難.在這些說模擬是說可以由這個例子來理解asp.net的運行機制(又說深了,他僅僅是一個模以而以) .代碼很簡單,無需細說,本測試在win2000,iis5,php 4.4.0上運行通過
page.php
<?php
/*******************************************************************************
*Sinoprise Function Classes
*CopyRight(c):2006 Sinoprise Technology Lab
*
*Unit Name: page.php
*func:
*Crate:Shuguang Yin 2006-07-15
*******************************************************************************/
class SFC_Page
{
//環境變量
/*var $Server;
var $Session;
var $QueryString;
var $Post;
var $Cookie;
var $Files;
var $Env;*/
//頁面控制屬性
var $EnableViewState;
//頁面屬性
var $CharSet;//頁面字符集
var $PageTitle;//頁面的標題
var $PageStyle;//頁面的風格
function SFC_Page()
{
/*if (strcmp(substr(PHP_VERSION,0,1),4)>=0){
$Server = $_SERVER;
$Session = $_SESSION;
$QueryString = $_GET;
$Post = $_POST;
$Cookie = $_COOKIE;
$Files = $_FILES;
$Env = $_ENV;
}else{
global $HTTP_SERVER_VARS,$HTTP_GET_VARS,$HTTP_POST_VARS,$HTTP_COOKIE_VARS,$HTTP_POST_FILES ;
global $HTTP_ENV_VARS,$HTTP_SESSION_VARS;
$Server = $HTTP_SERVER_VARS;
$Session = $HTTP_SESSION_VARS;
$QueryString = $HTTP_GET_VARS;
$Post = $HTTP_POST_VARS;
$Cookie = $HTTP_COOKIE_VARS;
$Files = $HTTP_POST_FILES;
$Env = $HTTP_ENV_VARS;
}*/
$this->EnableViewState = false;
}
//發生在服務器狀態還原之前
function PageInit()
{
}
//發生在服務器狀態還原之後,但在服務器端事件之前
function PageLoad()
{
}
//發生在激發服務器端事件之後,但在生成任何東西之前
function PagePreRender()
{
}
//發生在生成頁面之時
function PageRender()
{
}
//發生在網頁生成完成之後
function PageUnLoad()
{
}
//顯示輸出
function Display()
{
$this->PageInit();
if ($this->EnableViewState){
$this->DeCodeViewState();
}
$this->PageLoad();
$this->PagePreRender();
echo "<html><title>".$this->PageTitle."</title>";
echo "<META http-equiv=Content-Type content=/"text/html; charset=".$this->CharSet."/">";
echo "<body ".$this->PageStyle.">";
echo "<form name=/"SFC_WebForm/" id=/"SFC_WebForm/" method=/"post/" action=/"".$_SERVER['PHP_SELF']."/">";
$this->PageRender();
if ($this->EnableViewState){
$this->EnCodeViewState();
}
echo "</form></body></html>";
$this->PageUnLoad();
}
//判斷是第一次打開還是post
function IsPostBack()
{
}
//對ViewState進行編碼
function EnCodeViewState()
{
echo "<input type=/"hidden/" name=/"SFC_ViewState/" id=/"SFC_ViewState/" ";
echo "Value=/"".base64_encode(serialize($this))."/"";
echo ">";
}
//對ViewState進行解碼
function DeCodeViewState()
{
if (isset($_POST['SFC_ViewState'])){
$this = unserialize(base64_decode($_POST['SFC_ViewState']));
}
}
}
?>
頁面文件,php.php
<?
require_once('page.php');
class PhpTest extends SFC_Page
{
var $conut;
function PhpTest()
{
}
//發生在服務器狀態還原之前
function PageInit()
{
}
//發生在服務器狀態還原之後,但在服務器端事件之前
function PageLoad()
{
}
//發生在激發服務器端事件之後,但在生成任何東西之前
function PagePreRender()
{
}
//發生在生成頁面之時
function PageRender()
{
echo ++$this->conut;
//echo serialize($this);
echo "<br>";
echo "<input type=submit value=/"OOKK/" name=hello>";
}
//發生在網頁生成完成之後
function PageUnLoad()
{
}
}
$cls = new PhpTest();
$cls->CharSet="gb2312";
$cls->PageTitle="頁面的標題";
$cls->EnableViewState=true;
$cls->Display();
?>