guid.class.php 文件

PHP代码
  1. <?php   
  2. class  System   
  3. {   
  4.     function  currentTimeMillis()   
  5.     {   
  6.         list($usec,  $sec)  =  explode("  ",microtime());   
  7.         return  $sec.substr($usec,  2,  3);   
  8.     }   
  9. }   
  10. class  NetAddress   
  11. {   
  12.     var  $Name  =  'localhost';   
  13.     var  $IP  =  '127.0.0.1';   
  14.     function  getLocalHost()  //  static   
  15.     {   
  16.         $address  =  new  NetAddress();   
  17.         $address->Name  =  $_ENV["COMPUTERNAME"];   
  18.         $address->IP  =  $_SERVER["SERVER_ADDR"];   
  19.         return  $address;   
  20.     }   
  21.     function  toString()   
  22.     {   
  23.         return  strtolower($this->Name.'/'.$this->IP);   
  24.     }   
  25. }   
  26. class  Random   
  27. {   
  28.     function  nextLong()   
  29.     {   
  30.         $tmp  =  rand(0,1)?'-':'';   
  31.         return  $tmp.rand(1000,  9999).rand(1000,  9999).rand(1000,  9999).rand(100,  999).rand(100,  999);   
  32.     }   
  33. }   
  34. //  三段   
  35. //  一段是微秒  一段是地址  一段是随机数   
  36. class  Guid   
  37. {   
  38.     var  $valueBeforeMD5;   
  39.     var  $valueAfterMD5;   
  40.     function  Guid()   
  41.     {   
  42.         $this->getGuid();   
  43.     }   
  44.     //   
  45.     function  getGuid()   
  46.     {   
  47.         $address  =  NetAddress::getLocalHost();   
  48.         $this->valueBeforeMD5  =  $address->toString().':'.System::currentTimeMillis().':'.Random::nextLong();   
  49.         $this->valueAfterMD5  =  md5($this->valueBeforeMD5);   
  50.     }   
  51.     function  newGuid()   
  52.     {   
  53.         $Guid  =  new  Guid();   
  54.         return  $Guid;   
  55.     }   
  56.     function  toString()   
  57.     {   
  58.         $raw  =  strtoupper($this->valueAfterMD5);   
  59.         return  substr($raw,0,8).'-'.substr($raw,8,4).'-'.substr($raw,12,4).'-'.substr($raw,16,4).'-'.substr($raw,20);   
  60.     }   
  61. }   
  62. ?>  

使用

PHP代码
  1. <?php   
  2. require_once("guid.class.php");   
  3. $Guid = new Guid();   
  4. print $Guid->toString();   
  5. ?>   
posted on 2007-10-21 23:44  林宁  阅读(10052)  评论(2编辑  收藏  举报