標籤:
一、PHP基礎文法 變數到數組
1 <?php 2 //phpinfo(); 3 4 /* 變數 5 $a=1;//不分配空間 6 echo "\$a=".$a; 7 echo "<br/>"; 8 var_dump($a);// 結果為NULL 9 echo "hello worrld";*/ 10 11 /* int型最大能表示多大 12 echo "<br/>".PHP_INT_SIZE; 13 echo "<br/>".PHP_INT_MAX;//(2的31次方-1) 31:4*8-1個符號位 14 $a=-2147483648; 15 echo "<br/>".$a; 16 var_dump($a);//超過int型 範圍 則會變為float類型*/ 17 18 /* 布爾值 19 $d=0.0; 20 if(!$d){ 21 echo "!!"; 22 }*/ 23 /* 浮點數 24 浮點數精度是14(從左邊開始,第一個非0就是精度的開始)*/ 25 26 /*字元型 27 28 單引號和雙引號區別 29 30 $d=90; 31 $d1="$d"; 32 $d2=‘$d‘; 33 echo $d1; 34 echo $d2;*/ 35 36 //$a=7/5.1; 37 //echo $a; 38 39 # === 包括類型也相等 40 /*$a=2; 41 $b=2.0; 42 if($a!=$b) 43 { 44 echo"!="; 45 } 46 if($a!==$b)# !== 包括類型也不相等 47 { 48 echo "!=="; 49 }*/ 50 51 /* &&和||只要前面的一個為真假即不執行後一個 52 and 和 or 則不是 53 or的優先順序比=低 所以 54 $e=false or true; //結果為false,因為此時$e先賦值為FALSE 55 var_dump($e); 56 $f=true and false;//結果為true,因為此時$e先賦值為true 57 var_dump($f);*/ 58 59 /*字串拼接 60 $a="1";$b="2"; 61 $c=$a.$b; 62 */ 63 64 /* 物件類型運算子 65 66 class Dog{} 67 $dog=new Dog; 68 var_dump($dog instanceof Dog); 69 70 $a=3; 71 echo $a++*3;//9*/ 72 73 /*常量 74 define("TAX_INT",21); 75 #$TAX_INT=9; 76 echo TAX_INT; 77 78 const TAX_TWO=0.3; 79 echo "<br/>".TAX_TWO; */ 80 81 /* 82 #require ‘other.php‘;//不會判斷是否重複,可能導致重複輸出 83 require_once ‘other.php‘;// 先判斷是否有重複引入 84 85 #include ‘111other.php‘; 86 #include_once ‘other.php‘; 87 88 #require 和include區別: 89 #include如果出現了錯誤會繼續執行, 90 #而require則會終止程式 91 92 #echo "22"; 93 94 $i=2; 95 $result=getNum($i);//傳值,也可以傳地址& 96 echo $result;*/ 97 98 /*全域變數 global 99 $a=1;100 function get()101 {102 global $a;//可作用於局部內了103 $a++;104 }105 get();106 echo $a;107 */108 109 /*數組初始化110 //$array=array(1.2,12,"wrwe",true);111 //echo count($array);112 113 $arr=array("log"=>"daomul","mima"=>123);114 echo count($arr)."<br/>";115 foreach($arr as $key=>$val)116 {117 echo $key."=".$val."<br/>";118 }119 120 $arr2=array(""=>"32",1=>"fdsf",23,23);121 echo $arr2[""]."<br/>";122 echo $arr2[2]."<br/>";123 124 #使用true作為下標,即是1 ,false :0; null:""125 126 $arr3=array(123.4=>"arr3");127 echo $arr3[123]."<br/>";128 129 #顯示詳細數組資訊130 print_r($arr3); echo "<br/>";131 var_dump($arr3);132 133 #數組可以動態增長134 $arr4=array(2,3);135 echo $arr4[1]."<br/>";136 $arr4[2]=‘11 22 333 444‘;137 #echo $arr4[2];138 139 #字串的拆分 explode140 $arr=explode(" ",$arr4[2]);141 print_r($arr);142 143 foreach($arr as $key=>$val)# (要迴圈的數組 as 數組下標變數)144 {145 echo "<br/>$key=>$val";146 }147 148 echo "<br/>".$arr[1];149 unset($arr[1]);#銷毀數組元素後,關鍵字下標不會被重新填充組合150 print_r($arr);*/151 152 /*數組運算 疊加153 $a=array("a"=>12,"b"=>23);154 $b=array("a"=>21,"c"=>43);155 $a=$a+$b;156 print_r($a);*/157 158 159 ?>
二、數組
1 <html> 2 <head> 3 <meta http-equiv="content-type" content="text/html;charset=utf-8"> 4 </head> 5 <body> 6 <h1> 同一個介面傳輸參數</h1> 7 8 <?php 9 /* 在 input中加 value="<?php echo $grades; ?>" 仿造百度搜尋 */10 error_reporting(E_ALL ^ E_NOTICE);11 $grades=$_REQUEST[‘grade‘]; 12 $grade=explode(" ",$grades);13 $all=0;14 foreach($grade as $k=>$v)15 {16 $all+=$v;17 }18 ?>19 20 <form action="test.php" method="post">21 <input type="text" name="grade" value="<?php echo $grades; ?>"/>22 <input type="submit" value="start"/>23 </form>24 25 <?php26 echo "總的:".$all; 27 ?>28 </body>29 </html>
三、靜態變數
1 <?php 2 3 class Child 4 { 5 public static $num=0; 6 public $name; 7 function __construct($name) //只有new之後才能調用 8 { 9 $this->name=$name;10 }11 //靜態變數不能用this來訪問12 public function join()13 {14 self::$num+=1; //可以: Child::$num15 echo $this->name."you"; 16 } 17 }18 19 $child1=new Child("k");20 $child1->join();21 $child1=new Child("a");22 $child1->join();23 $child1=new Child("b");24 $child1->join();25 echo "<br/>".Child::$num;26 //類外只能是 類名::變數,27 //類內就能兩種28 ?>
四、繼承/封裝/多態/抽象
1 /*class Child 2 { 3 public static $num=0; 4 public $name; 5 //構造方法 6 function __construct($name) //只有new之後才能調用 7 { 8 $this->name=$name; 9 } 10 //靜態變數不能用this來訪問 11 public function join($ifee) 12 { 13 self::ifee+=1; //可以: Child::$num 14 echo $this->name."you"; 15 } 16 } 17 18 $child1=new Child("k"); 19 $child1->join(); 20 $child1=new Child("a"); 21 $child1->join(); 22 $child1=new Child("b"); 23 $child1->join(); 24 echo "<br/>".Child::$num; 25 //類外只能是 類名::變數, 26 //類內就能兩種*/ 27 28 29 30 //靜態方法不能採用非靜態變數,只能使用非靜態變數 31 // 成員函數之間相互調用,需要用 $this->text(); 32 33 //繼承 34 35 //1、子類只能繼承一個父類 36 // 如果想多重繼承可以考慮通過多次繼承: 37 /*class A{} 38 class B extends A{} 39 class C extends B{}*/ 40 41 //2、父類中的構造方法,在創造一個子類的對象執行個體的時候不會預設自動調用 42 //3、 子類中調用父類的方法 43 //父類名::方法名(); / parent::方法名(); parent小寫 44 45 //覆蓋: 46 # 子類的方法和父類的方法名稱和參數個數完全一樣,但不要求參數名相同 47 # 但是修飾符可以不同,但是子的範圍〉=父類範圍 48 # 父類是private則不能覆蓋 49 /*class A{ 50 function F(){ 51 echo " 父類在此!<br/>"; 52 } 53 } 54 class B extends A{} 55 class C extends B{ 56 function F(){ 57 echo "調用了父類了<br/>"; 58 parent::F(); 59 A::F(); 60 } 61 } 62 $C1=new C(); 63 $C1->F();*/ 64 65 //抽象類別:父類中不需要被執行個體化,只讓子類繼承,也可以被調用裡面的;達到代碼複用 66 67 #抽象類別 abstract class name{} 68 #抽象方法 abstract public cry(); 69 #抽象類別不一定也有抽象方法 70 #類包含抽象方法則必須為抽象類別 71 #子類繼承抽象父類,則必須為抽象類別或者實現繼承的所有,所有!方法 72 73 74 //介面:interfacde 介面{//屬性 //方法} 75 # 只能定義規範,讓類去實現介面 ,不能自己實現, 76 # class c implements 介面{} 77 # 介面不能被執行個體化/介面能繼承其他多個介面/不能不為public 78 # 一個類實現了一個介面,必須把介面以及其繼承的介面的方法全部實現 79 # (1 多個平級的類都要實現某個功能,只是實現方式不同,沒有繼承關係, 80 #(2 專案經理定規範,讓其他程式員實現 81 /*interface Stu 82 { 83 const A=90; 84 public function add(); 85 } 86 interface Stu2{} 87 88 class MyStu implements Stu,Stu2 89 { 90 public function add() 91 { 92 echo "dddd".Stu::A."<br/>"; 93 } 94 } 95 $mystu=new MyStu(); 96 $mystu->add(); 97 echo "OK".Stu::A; #獲得介面中的常量*/ 98 99 //final 使類中的方法不被覆蓋100 # final 不能修飾成員屬性101 /*class A102 {103 final public function get($salary)104 {105 return $salary*3;106 }107 }108 class B extends A109 {110 public function get($sal)111 {112 return $sal*2; 113 }114 }115 $b=new B();116 $b->get("21"); #Cannot override final method A::get() */117 118 //const常量119 # 要賦初始值;不能後面賦值;不能加$等修飾符120 # self::A ; 類名::A ;介面名::A; 等方式獲得常量A的值
五、檔案操作以及錯誤處理
1 <?php 2 3 // 檔案操作 4 /*處理錯的方式1 5 if(!file_exists("file1.txt")) 6 { 7 echo "not here"; 8 exit(); 9 }10 else11 {12 $fp=fopen("file1.txt","r");13 echo "檔案已開啟";14 fclose($fp);15 }*/16 17 /* 處理錯的方式218 if(!file_exists("a.txt"))19 {20 die("wenjianbucunzai");21 }22 else23 {}24 echo "end";*/25 /*處理錯的方式126 27 file_exists("b.txt") or die("zhen de ");28 echo "end";29 */30 31 //定義錯誤函數32 /*function my_error($error,$err_message)33 {34 echo "<font size=‘5‘ color=‘red‘> $error </front><br/>";//235 //echo "錯誤資訊是:".$err_message;36 exit();37 }38 39 //改變系統預設的錯誤處理函數(“使用者自己定義的錯誤輸出函數”,“錯誤類型”)40 set_error_handler("my_error",E_WARNING);41 $fp=fopen("aa.txt",‘r‘);*/42 43 //錯誤觸發器44 45 function my_error3($error,$err_message)46 {47 echo "錯誤號碼:".$error;48 }49 function my_error4($error,$err_message)50 {51 echo "big big!";52 }53 set_error_handler("my_error3",E_USER_WARNING);//54 set_error_handler("my_error4",E_USER_ERROR);//致命錯誤,不繼續執行55 $age=140;56 if($age>120)57 {58 //調用觸發器的時候指定錯誤層級59 trigger_error("輸入的數字過大!",E_USER_ERROR);60 //trigger_error("輸入的數字過大!",E_USER_WARNING);61 //exit();62 }63 echo "ok";64 ?>
六、錯誤記錄檔
1 <?php 2 3 //錯誤記錄檔 php.ini 中的error_log的配置 4 5 function my_error5($error,$err_meaasge) 6 { 7 $err_info="錯誤資訊:".$error."--".$err_meaasge; 8 //echo time(); 9 //輸出 當前日期10 // 調整時區:預設時期是UTC和中國差8小時 PRC 或者Asia/Chongqing11 12 date_default_timezone_set("PRC");13 14 echo date("Y-m-d G-i-s");15 echo "<br/>".$err_info;16 17 #將錯誤存入系統檔案中18 error_log("時間是:".date("Y-m-d G-i-s")."-".$err_info."\r\n",3,"myerror.txt");//3個參數19 }20 set_error_handler("my_error5",E_USER_WARNING);21 $i=1;22 if($i<2)23 {24 trigger_error("輸入的數字過小",E_USER_WARNING);25 }26 ?>
七、捕獲異常
1 <?php 2 3 //處理異常 4 #注意事項:異常拋出之後,得代碼不會被繼續執行 5 #拋出異常之後如果沒用處理則會報錯 6 try 7 { 8 addUser("1a"); 9 }10 catch(Exception $e)11 {12 echo "失敗資訊:".$e->getMessage();//getLine()13 #可以繼續拋出 throw $e;14 #也可以頂一個頂級異常處理15 # $i=8/0 fopen("a.txt","r") 很難拋出異常16 }17 18 function addUser($user)19 {20 if($user=="a")21 {22 echo "登陸成功!";23 }24 else25 {26 throw new Exception("使用者名稱錯誤!");27 }28 29 }30 31 /*#頂級異常處理32 function my_error()33 {34 echo "我是頂級異常處理!".e->getMeaasge();35 }36 set_error_handler("my_error");*/37 38 ?>
PHP總結筆記