<p> 用php模拟asp.net是不大可能的,特别是对于php这样的对面向对象支持不完整的动态语言来讲,更是很大的困难.在这些说模拟是说可以由这个例子来理解asp.net的运行机制(又说深了,他仅仅是一个模以而以).代码很简单,无需细说,本测试在win2000,iis5,php 4.4.0上运行通过</p><p> page.php</p><code><?php<br />/*******************************************************************************<br />*Sinoprise Function Classes<br />*CopyRight(c):2006 Sinoprise Technology Lab<br />*<br />*Unit Name: page.php<br />*func:<br />*Crate:Shuguang Yin 2006-07-15<br />*******************************************************************************/<br />class SFC_Page<br />{<br /> <br />//环境变量<br /> /*var $Server; <br /> var $Session;<br /> var $QueryString;<br /> var $Post;<br /> var $Cookie;<br /> var $Files;<br /> var $Env;*/<br /> <br />//页面控制属性<br /> var $EnableViewState;<br /> <br /> //页面属性<br /> var $CharSet;//页面字符集<br /> var $PageTitle;//页面的标题<br /> var $PageStyle;//页面的风格<br /> <br /> <br /> <br /> function SFC_Page()<br /> {<br /> <br />/*if (strcmp(substr(PHP_VERSION,0,1),4)>=0){<br /> $Server = $_SERVER; <br /> $Session = $_SESSION;<br /> $QueryString = $_GET;<br /> $Post = $_POST;<br /> $Cookie = $_COOKIE;<br /> $Files = $_FILES;<br /> $Env = $_ENV;<br /> }else{<br /> global $HTTP_SERVER_VARS,$HTTP_GET_VARS,$HTTP_POST_VARS,$HTTP_COOKIE_VARS,$HTTP_POST_FILES ;<br /> global $HTTP_ENV_VARS,$HTTP_SESSION_VARS;<br /> $Server = $HTTP_SERVER_VARS; <br /> $Session = $HTTP_SESSION_VARS;<br /> $QueryString = $HTTP_GET_VARS;<br /> $Post = $HTTP_POST_VARS;<br /> $Cookie = $HTTP_COOKIE_VARS;<br /> $Files = $HTTP_POST_FILES;<br /> $Env = $HTTP_ENV_VARS; <br /> }*/<br /> $this->EnableViewState = false; <br /> }<br /> //发生在服务器状态还原之前<br /> function PageInit()<br /> {<br /> }<br /> //发生在服务器状态还原之后,但在服务器端事件之前<br /> function PageLoad()<br /> {<br /> }<br /> //发生在激发服务器端事件之后,但在生成任何东西之前<br /> function PagePreRender()<br /> {<br /> }<br /> //发生在生成页面之时<br /> function PageRender()<br /> {<br /> }<br /> //发生在网页生成完成之后<br /> function PageUnLoad()<br /> {<br /> }<br /> //显示输出<br /> function Display()<br /> {<br /> $this->PageInit();<br /> if ($this->EnableViewState){<br /> $this->DeCodeViewState();<br /> }<br /> $this->PageLoad();<br /> $this->PagePreRender();<br /> echo "<html><title>".$this->PageTitle."</title>";<br /> echo "<META http-equiv=Content-Type content="text/html; charset=".$this->CharSet."">";<br /> echo "<body ".$this->PageStyle.">";<br /> echo "<form name="SFC_WebForm" id="SFC_WebForm" method="post" action="".$_SERVER['PHP_SELF']."">";<br /> $this->PageRender();<br /> if ($this->EnableViewState){<br /> $this->EnCodeViewState();<br /> }<br /> echo "</form></body></html>"; <br /> $this->PageUnLoad();<br /> }<br /> <br /> //判断是第一次打开还是post<br /> function IsPostBack()<br /> {<br /> <br /> }<br /> //对ViewState进行编码<br /> function EnCodeViewState()<br /> {<br /> echo "<input type="hidden" name="SFC_ViewState" id="SFC_ViewState" ";<br /> echo "Value="".base64_encode(serialize($this)).""";<br /> echo ">";<br /> }<br /> //对ViewState进行解码<br /> function DeCodeViewState()<br /> {<br /> if (isset($_POST['SFC_ViewState'])){<br /> $this = unserialize(base64_decode($_POST['SFC_ViewState']));<br /> }<br /> }<br />}<br />?><br />页面文件,php.php<br /><?<br />require_once('page.php');<br />class PhpTest extends SFC_Page<br />{<br /> var $conut;<br /> <br /> function PhpTest()<br /> {<br /> }<br /> //发生在服务器状态还原之前<br /> function PageInit()<br /> {<br /> }<br /> <br /> //发生在服务器状态还原之后,但在服务器端事件之前<br /> function PageLoad()<br /> {<br /> }<br /> <br /> //发生在激发服务器端事件之后,但在生成任何东西之前<br /> function PagePreRender()<br /> {<br /> }<br /> <br /> //发生在生成页面之时<br /> function PageRender()<br /> {<br /> echo ++$this->conut; <br /> //echo serialize($this);<br /> echo "<br>";<br /> echo "<input type=submit value="OOKK" name=hello>";<br /> }<br /> <br /> //发生在网页生成完成之后<br /> function PageUnLoad()<br /> {<br /> } <br />}<br />$cls = new PhpTest();<br />$cls->CharSet="gb2312";<br />$cls->PageTitle="页面的标题";<br />$cls->EnableViewState=true;<br />$cls->Display();<br />?></code></p>