«
用Php模拟asp.net的页面模型

时间:2008-5-31    作者:Deri    分类: 分享


   <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>