用php实现像JSP,ASP里Application那样的全局变量

复制代码 代码如下:

  <?php

  /**

  * 功能:实现像JSP,ASP里Application那样的全局变量

  * author: [url]www.itzg.net[/url]

  * version: 1.0

  * 版权:如许转载请保留版权声明

  */

  /*+----------------example----------------------

  require_once("Application.php");

  $arr = array(0=>"Hi",1=>"Yes");

  $a = new Application();

  $a->setValue("t1","arui");

  $a->setValue("arr",$arr);

  $u = $a->getValue();

  ---------------------------------------------+*/

  class Application

  {

  /**保存共享变量的文件*/

  var $save_file    = 'Application/Application';

  /**共享变量的名称*/

  var $application  = null;

  /**序列化之后的数据*/

  var $app_data    = '';

  /**是否已经做过setValue的操作 防止频繁写文件操作*/

  var $__writed    = false;

  /**

  * 构造函数

  */

  function Application()

  {

  $this->application = array();

  }

  /**

  * 设置全局变量

  * @param string $var_name 要加入到全局变量的变量名

  * @param string $var_value 变量的值

  */

  function setValue($var_name,$var_value)

  {

  if (!is_string($var_name) || empty($var_name))

  return false;

  if ($this->__writed)

  {

  $this->application[$var_name] = $var_value;

  return;

  }

  $this->application = $this->getValue();

  if (!is_array($this->application))

  settype($this->application,"array");

  $this->application[$var_name] = $var_value;

  $this->__writed = true;

  $this->app_data = @serialize($this->application);

  $this->__writeToFile();

  }

  /**

  * 取得保存在全局变量里的值

  * @return array

  */

  function getValue()

  {

  if (!is_file($this->save_file))

  $this->__writeToFile();

  return @unserialize(@file_get_contents($this->save_file));

  }

  /**

  * 写序列化后的数据到文件

  * @scope private

  */

  function __writeToFile()

  {

  $fp = @fopen($this->save_file,"w");

  @fwrite($fp,$this->app_data);

  @fclose($fp);

  }

  }

  ?>