用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();
?>
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=932084