PHP總結筆記

來源:互聯網
上載者:User

標籤:

一、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總結筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.