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

http://tech.ddvip.com   2007年08月24日    社区交流

内容摘要:用Php模拟asp.net的页面模型

  用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();
?>

责编:豆豆技术应用

正在加载评论...