返回列表 回复 发帖

PHP sample

  1. <?php
  2. /*赋值*/
  3. $a = 1;
  4. $b = $a;
  5. $b = 90;
  6. echo $a;
  7. //1

  8. /*引用*/
  9. $a = 1;
  10. $b = &$a;
  11. $b = 90;
  12. echo $a;
  13. //90

  14. $a = 10;
  15. function foo(&$var)
  16. {
  17.     $var++;
  18.         return $var;
  19. }

  20. function &bar()
  21. {
  22.     global $a;
  23.     return $a;
  24. }
  25. foo(bar());

  26. echo $a; //输出 11




  27. //返回引用
  28. $var_org = 10;
  29. function &find_var($param)
  30. {
  31.     global $var_org;
  32.     return $var_org;
  33. }

  34. $foo =& find_var($bar);
  35. $foo = 2;
  36. echo $var_org;


  37. /*静态变量*/
  38. function test_static_var()
  39. {
  40.         static $static_var = 0;       
  41.         return $static_var++;
  42. }
  43. test_static_var();
  44. test_static_var();
  45. test_static_var();
  46. echo test_static_var();
  47. // 3


  48. $global_var = 100;
  49. function test_global_var()
  50. {       
  51.         global $global_var;
  52.         echo $global_var;
  53. }
  54. test_global_var();
  55. //100


  56. /*类*/
  57. class MyClass
  58. {
  59.     public $var1 = 'value 1';
  60.     public $var2 = 'value 2';
  61.     public $var3 = 'value 3';
  62. }
  63. $class = new MyClass;
  64. foreach($class as $key => $value){
  65.     print "$key => $value\n";
  66. }
  67. //var1 => value 1
  68. //var2 => value 2
  69. //var3 => value 3

  70. $a = array('a', 'b');
  71. array_push($a, array(1, 2));

  72. //Array ( [0] => a [1] => b [2] => Array ( [0] => 1 [1] => 2 ) )

  73. /*类的特殊函数*/
  74. class Setter
  75. {   
  76.     private function __get($nm)
  77.     {      
  78.     }

  79.     private function __set($nm, $val)
  80.     {        
  81.     }

  82.     private function __isset($nm)
  83.     {
  84.                 echo 'isset';
  85.     }

  86.     private function __unset($nm)
  87.     {        
  88.                 echo 'unset';
  89.     }
  90.        
  91.         private function __tostring()
  92.         {
  93.                 return 'string';
  94.         }
  95.        
  96.         public function __sleep()
  97.         {
  98.                
  99.         }
  100.        
  101.         public function __wakeup()
  102.         {
  103.                
  104.         }
  105. }

  106. $foo = new Setter();
  107. $foo->a = 100;
  108. $foo->a++;

  109. unset( $foo->a );
  110. isset( $foo->a );
  111. serialize($foo);
  112. unserialize($foo);
  113. echo $foo;


  114. //clone
  115. class about_clone
  116. {
  117.         var $a = 1;
  118. }
  119. $object_1 = new about_clone;
  120. $object_2 = $object_1;
  121. $object_2->a = 100;
  122. echo $object_1->a;


  123. $object_3 = clone $object_1;
  124. $object_3->a = 300;
  125. echo $object_1->a;

  126. class about_clone_2
  127. {
  128.         var $a = 1;
  129.        
  130.         //__clone 在对象克隆前调用。
  131.         public function __clone()
  132.         {
  133.        
  134.         }
  135. }
  136. $object_1 = new about_clone_2;
  137. $object_3 = clone $object_1;


  138. //强制参数的对象实例
  139. function type_force( about_clone_2 $a )
  140. {
  141.         echo 'Only instances of class about_clone_2 are approved.';
  142. }
  143. $var = new about_clone_2;
  144. type_force( $var );





  145. /*异常处理*/
  146. class FileExistsException extends Exception{} //用于处理文件不存在异常的类
  147. class FileOpenException extends Exception{} //用于处理文件不可读异常的类

  148. $path = "D:\\\\in.txt";

  149. try{
  150.         file_open($path); //程序执行块
  151. }catch(FileExistsException $e){ //如果产生FileExistsException异常则提示用户确认文件位置
  152.         echo "程序在运行过程中发生了异常:".$e->getMessage()."\\n";
  153.         echo "请确认文件位置。";
  154. }catch(FileOpenException $e){ //如果产生FileOpenException异常则提示用户确认文件的可读性
  155.         echo "程序在运行过程中发生了异常:".$e->getMessage()."\\n";
  156.         echo "请确认文件的可读性。";
  157. }catch(Exception $e) {
  158.         echo "[未知异常]";
  159.         echo "异常信息:".$e->getMessage()."\\n"; //返回用户自定义的异常信息
  160.         echo "异常代码:".$e->getCode()."\\n"; //返回用户自定义的异常代码
  161.         echo "文件名:".$e->getFile()."\\n"; //返回发生异常的PHP程序文件名
  162.         echo "异常代码所在行".$e->getLine()."\\n"; //返回发生异常的代码所在行的行号
  163.         echo "传递路线:";
  164.         print_r($e->getTrace()); //以数组形式返回跟踪异常每一步传递的路线
  165.         echo $e->getTraceAsString(); //返回格式化成字符串的getTrace函数信息
  166. }

  167. function file_open($path)
  168. {
  169.         try
  170.         {
  171.                 if(!file_exists($path)){
  172.                         throw new FileExistsException("文件无法找到", 1);
  173.                 }

  174.                 if(!fopen($path, "r")){
  175.                         throw new FileOpenException("文件无法打开", 2);
  176.                 }
  177.         }catch(Exception $e){ //捕获异常
  178.                 echo "file_open函数在运行过程中出现异常";
  179.                 throw $e; //重掷异常 .异常可以逐层往上抛
  180.         }
  181. }
复制代码
返回列表