PHP 初學者入門需掌握的知識點,解決問題遊刃有餘

2020-08-10 10:41:42

 常用的函數方法地址
         https://www.jb51.net/article/12690_all.htm

這是自己整理的一些常用的函數和一些需掌握的知識點,歸納如下:

字串函數
一般我們在字串(地址、檔案路徑、圖片路徑)中去查詢某個字元或者符號,返回所在的位置,通過幾個函數去查詢,限定字串
1、strstr
     語法:strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
     返回 needle 在 haystack 中第一次出現的位置開始到結尾的字串 【區分大小寫】,成功返回字元竄,       否則返回false。 
     如:$mystring = 'helloworld';
            $findme   = 'l';
            $pos = strstr($mystring, $findme); //$pos值爲lloworld

2、stristr
     string stristr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
     描述:返回 needle 在 haystack 中最後一次出現的位置到結尾的字串,【不區分大小寫】,成功返回字     符串, 否則返回false。 
     如: $mystring = 'helloworld';
            $findme   = 'L';
            $pos = stristr($mystring, $findme); //$pos值爲lloworld

3、strpos
     語法:strpos ( string $haystack , string $needle [, int $offset = 0 ] )
     查詢 needle 在 haystack 中第一次出現的位置。【區分大小寫】,存在返回位置,否則返回false。
     如:   $mystring = 'helloworld';
            $findme   = 'l';
            $pos = strpos($mystring, $findme); //$pos值爲2
    常用的場景就是 ——  查詢域名,
     if ( strpos($haystack, strval($needle)) !== false ) {
    //成功
     } else {
               //失敗
     }            
4、stripos
     語法:stripos ( string $haystack , string $needle [, int $offset = 0 ] )
     查詢 needle 在 haystack 中第一次出現的位置。【不區分大小寫】,存在返回位置,否則返回false。
     如:   $mystring = 'helloworld';
            $findme   = 'l';
            $pos = stripos($mystring, $findme); //$pos值爲2

5、strrpos
      語法:strrpos ( string $haystack , string $needle [, int $offset = 0 ] )
      查詢 needle 在 haystack 中最後一次出現的位置。【區分大小寫】,存在返回位置,否則返回false。
      如: $mystring = 'helloworld';
             $findme   = 'l';
             $pos = strrpos($mystring, $findme); //$pos值爲8

6、strripos
      語法:strripos ( string $haystack , string $needle [, int $offset = 0 ] )
      查詢 needle 在 haystack 中最後一次出現的位置。【不區分大小寫】,存在返回位置,否則返回false。
      如: $mystring = 'helloworld';
             $findme   = 'l';
             $pos = strripos($mystring, $findme); //$pos值爲8

             $findme   = 'q';
             $pos = strripos($mystring, $findme); //$pos值爲false

7、str_replace
     語法: str_replace(find,replace,string,count)  
     說明: 使用一個字串替換字串中的另一些字元,區分大小寫的搜尋   
     如:str_replace(array("m","i"),array("n","z"),array("my name is jim!","the game is over")); // 返回的陣列內容:ny nane zs jzn!the gane zs over    (m換成n,i換成z)
 
8、str_ireplace
     語法; str_ireplace(find,replace,string,count)  
     說明:    使用一個字串替換字串中的另一些字元,對大小寫不敏感的搜尋
     如:str_ireplace("WORLD","Peter","Hello world!");  //輸出 Hello Peter!

注:需要被替換的find可以是陣列

9、strrchr
     語法:string strrchr ( string $haystack , mixed $needle )
               返回 haystack 字串中的一部分,這部分以 needle 的最後出現位置開始,直到 haystack 末尾。              【區分大小寫】,存在,返回字串,否則返回 FALSE
     如 :$mystring = 'helloworld';
            $findme   = 'l';
            $pos = strrchr($mystring, $findme); //$pos值爲ld

10、substr  字串擷取

11、addslashes  使用反斜線參照字串
      說明:返回字串,該字串爲了數據庫查詢語句等的需要在某些字元前加上了反斜線
      範例:$str = "Is your name O'reilly?";
                echo addslashes($str);
      輸出: Is your name O\'reilly?

12、stripslashes
       說明:刪除由 addslashes() 函數新增的反斜槓。
       範例:echo stripslashes("Who\'s Bill Gates?");
       輸出:Who's Bill Gates?

13、htmlspecialchars
       說明:把預定義的字元轉換爲 HTML 實體。
                 預定義字元如下:& (和號)成爲 &
                                           " (雙引號)成爲 "
                   ' (單引號)成爲 '
                   < (小於)成爲 <
                   > (大於)成爲 >
       語法:htmlspecialchars(string,flags,character-set,double_encode)
                參數說明:
        flag    可用的引號型別:
        ENT_COMPAT - 預設。僅編碼雙引號。
        ENT_QUOTES - 編碼雙引號和單引號。
        ENT_NOQUOTES - 不編碼任何引號。

       範例:$str = "Bill & 'Steve'";
    echo htmlspecialchars($str, ENT_COMPAT); // 只轉換雙引號
       輸出:Bill &amp; 'Steve'

14、htmlspecialchars_decode
       說明: 把 htmlspecialchars()函數轉變的一些預定義的 HTML 實體轉換爲字元。
       語法: htmlspecialchars_decode( _string,flags_ )   flags_ 參數:ENT_COMPAT    會轉換雙引號,不轉換單引號。ENT_QUOTES    既轉換雙引號也轉換單引號。ENT_NOQUOTES    單/雙引號都不轉換
       範例:   $string = "ggbiji &amp; 'ggbiji'";
        echo htmlspecialchars_decode($string);
      輸出:ggbiji & 'ggbiji'

15、htmlentities()   將以下特殊字元轉換爲 HTML 實體            (無作用)
       範例:$str="<script>alert('123')</script>";
    echo htmlentities($str, ENT_QUOTES);    
       輸出:&lt;script&gt;alert(&#039;123&#039;)&lt;/script&gt;

16、html_entity_decode  把 HTML 實體轉換爲字元
       範例:$str = "Bill &amp; &#039;Steve&#039;";
    echo html_entity_decode($str); // 只轉換雙引號
       輸出:Bill & 'Steve'
      
17、strip_tags  從字串中去除 HTML 和 PHP 標記 【返回給定的字串 str 去除空字元、HTML 和 PHP 標記後的結果】
      語法:strip_tags ( string $str [, string $allowable_tags ] ) : string   ——    allowable_tags  使用可選的第二個參數指定不被去除的字元列表。
      範例:$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
    echo strip_tags($text);
      輸出:Test paragraph. Other text

  
 header('content-type:text/html;charset=utf8');        //設定頁面內容是html,編碼格式是utf-8。
 常用header彙總:
       

header('Content-Type: text/html; charset=utf-8'); //網頁編碼


       header('Content-Type: text/plain'); //純文字格式

     
  header('Content-Type: image/jpeg'); //JPG、JPEG

       header('Content-Type: application/zip'); // ZIP檔案

       
header('Content-Type: application/pdf'); // PDF檔案


       header('Content-Type: audio/mpeg'); // 音訊檔

       
header('Content-type: text/css'); //css檔案


       header('Content-type: text/javascript'); //js檔案


       header('Content-type: application/json'); //json
       

header('Content-type: application/pdf'); //pdf
       

header('Content-type: text/xml'); //xml


       header('Content-Type: application/x-shockw**e-flash'); //Flash動畫


陣列函數
1、array_push 
     向陣列尾部新增一個或多個元素值(入棧),然後返回新陣列
     範例:$a=array("Dog","Cat");
               array_push($a,"Horse","Bird");
               print_r($a);
     輸出: array("Dog","Cat","Horse","Bird")
         
2、array_pop 
     刪除陣列中最後一個元素,然後返回刪除後的新陣列
     範例:$a=array("red","green","blue");
               array_pop($a);
               print_r($a);
     輸出: array( "red", "green" )
     
3、array_column  (適用於二維陣列)
     語法: array_column ( array $input , mixed $column_key [, mixed $index_key = null ] ) : array
     說明:array_column() 返回input陣列中鍵值爲column_key的列, 如果指定了可選參數index_key,那麼input陣列中的這一列的值將作爲返回陣列中對應值的鍵。
     範例: $a=array(array('id'=>1,'name'=>"red"),array('id'=>2,'name'=>"green"),array('id'=>3,'name'=>"blue"));
                $arr = array_column($a, 'name', 'id');
                print_r($arr);
     輸出:array( 1=>'red', 2=>'green', 3=>'blue' )

4、array_shift
     刪除陣列中的第一個元素,並返回被刪除的元素值
    範例: $a=array("a"=>"red","b"=>"green","c"=>"blue");
               echo array_shift($a);
    輸出: red

5、array_unshift
     將元素插入到陣列第一個元素的位置
     範例: $a=array("red","green","blue");
                array_unshift( $a, 'orange' );
               print_r($a);
    輸出: array( "orange","red","green","blue")

6、array_filter
     語法: array_filter( array, function )
     說明:用回撥函數 function 過濾陣列中的元素。該函數把輸入陣列中的每個鍵值傳給回撥函數。如果回撥函數返回 true,則把輸入陣列中的當前鍵值返回給結果陣列。陣列鍵名保持不變。
     範例1:$a1=array("a","b",2,3,4);
               $arr = array_filter($a1, function ($var){
                        return $var & 1;
               });
    print_r($arr);
     輸出: array( 3=> 3 )
     
     範例2:$arr = [0, 1, 2, false, '', null, "0"];

                 $arr = array_filter($arr, function ($val) {
                        if ($val === 0 || $val != false) {
                             return true;
                        } else {
                             false;
                        }
                 });
                 print_r($arr);  //輸出 Array ( [0] => 0 [1] => 1 [2] => 2 )

7、array_unique (不適用於多維陣列)
     接受array 作爲輸入並返回沒有重複值的新陣列。 注意鍵名保留不變。
     範例:$input = array("a" => "green", "red", "b" => "green", "blue", "red");
               $result = array_unique($input);
               print_r($result);
     輸出:array( a=>green, red, blue)

8、array_merge
      將一個或多個數組的單元合併起來,一個數組中的值附加在前一個數組的後面。返回作爲結果的陣列
     範例:$array1 = array("color" => "red", 2, 4);
               $array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
               $result = array_merge($array1, $array2);
               print_r($result); 
     輸出: Array
(
    [color] => green
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [shape] => trapezoid
    [4] => 4
)
     注意:如果輸入的陣列中有相同的字串鍵名,則該鍵名後面的值將覆蓋前一個值。然而,如果陣列包含數位鍵名,後面的值將不會覆蓋原來的值,而是附加到後面。

9、array_rand 
     語法: array_rand(array,number)
     從陣列中隨機選出一個或多個元素,並返回
     範例: $a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
                print_r(array_rand($a,2));
     輸出:Array ( [0] => c [1] => b )

10、array_reverse
       語法:array_reverse(array,preserve)
       說明:函數將原陣列 array 中的元素順序翻轉,建立新的陣列並返回。如果第二個參數 preserve 指定爲 true,反轉輸出則元素的鍵名保持不變,否則鍵名將丟失。
       範例:$a=array("Volvo","XC90",array("BMW","Toyota"));
                 $preserve=array_reverse($a,true);
                 print_r($preserve);
       輸出: Array ( [2] => Array ( [0] => BMW [1] => Toyota ) [1] => XC90 [0] => Volvo )   

11、array_map
      語法:array_map ( callable $callback , array $array1 [, array $... ] ) : array
      說明:返回陣列,是爲 array1 每個元素應用 callback函數之後的陣列。 callback 函數形參的數量和傳給 array_map() 陣列數量,兩者必須一樣。
      範例1:$frameIdCol = array("Volvo","XC90","BMW","Toyota");
                  $frameIdCol = array_map(function($val){
                        return $val . '訂單狀態';
                   }, $frameIdCol);
                   print_r($frameIdCol););
      輸出:Array ( [0] => Volvo訂單狀態 [1] => XC90訂單狀態 [2] => BMW訂單狀態 [3] => Toyota訂單狀態 )
       
      範例2: $func = function($value) {
                        return $value * 2;
                   };

                   print_r(array_map($func, range(1, 5)));
      輸出: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )

12、array_walk
       語法:array_walk ( array &$array , callable $callback [, mixed $userdata = NULL ] ) : bool
       說明:使用使用者自定義函數對陣列中的每個元素做回撥處理【將使用者自定義函數 funcname 應用到 array 陣列中的每個單元,array_walk() 不會受到 array 內部陣列指針的影響。array_walk() 會遍歷整個陣列而不管指針的位置。成功時返回 TRUE, 或者在失敗時返回 FALSE。】,典型情況下 callback 接受兩個參數。array 參數的值作爲第一個,鍵名作爲第二個。
        範例1:  $new_hooks = array('apple','orange','pear');
                     array_walk( $new_hooks, array( $this, 'hook_in' ) );
        
        範例2:$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
                   array_walk($fruits, 'test_print');
                   function test_print($item2, $key)
                   {
                         echo "$key. $item2<br />\n";
                   }
         輸出:d. lemon
                   a. orange
                   b. banana
                   c. apple

    【   array_map / array_walk 區別
         1、區別
               
array_walk 主要是要對陣列du內的每個值進行zhi操dao作,操作結果影響原來的陣列

               array_map主要是對陣列中的值進行操作後返回陣列,以得到一個新陣列
         
2、區別
               
array_walk 可以沒有返回值;array_map要有返回值,因爲要填充陣列
       】

13、array_keys
       描述:返回包含陣列中所有鍵名的一個新陣列
       語法:array_keys(array,value,strict)
       參數說明:strict    
        可選。與 value 參數一起使用。可能的值:
        true - 返迴帶有指定鍵值的鍵名。依賴型別,數位 5 與字串 "5" 是不同的。
        false - 預設值。不依賴型別,數位 5 與字串 "5" 是相同的。
       範例:$a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
    print_r(array_keys($a));
    print_r(array_keys($a,"Highlander"));
       輸出:Array ( [0] => Volvo [1] => BMW [2] => Toyota )
    Array ( [0] =>Toyota )

14、array_diff 
       描述:用於比較兩個(或更多個)陣列的值,並返回差集。
       語法;array_diff(array1,array2,array3...);
              參數說明;    array1    必需。與其他陣列進行比較的第一個陣列。
        array2    必需。與第一個陣列進行比較的陣列。
        array3,...    可選。與第一個陣列進行比較的其他陣列。
      範例:$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
    $a2=array("e"=>"red","f"=>"green","g"=>"blue");
    $result=array_diff($a1,$a2);
    print_r($result);
      輸出:Array ( [d] => yellow )
             注:不管這兩個陣列是否相同都有可能返回的是空陣列,因爲它只返回 $array1 的差集,所以要驗證是否相同的要相互比較才行,
     例子如下:if( !array_diff($arr1, $arr2) && !array_diff($arr2, $arr1)){
            // 即相互都不存在差集,那麼這兩個陣列就是相同的了,多陣列也一樣的道理
                       return true;
         }

15、array_filp
       描述:用於反轉/交換陣列中的鍵名和對應關聯的鍵值
       語法:array_flip(array);
       範例:$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
     $result=array_flip($a1);
     print_r($result);
        輸出:Array ( [red] => a [green] => b [blue] => c [yellow] => d )

檔案處理常式
1、file_put_contents
       將數據寫入到檔案,會替換原先的值。當設定 flags 參數值爲 FILE_APPEND 時,表示在已有檔案內容後面追加內容的方式寫入新數據
       語法:file_put_contents(fileName,data,flags,context)   
       說明:data 參數型別可以是string、陣列(不能爲多維陣列)、stream資源
       範例:  file_put_contents("result.txt", "hello", FILE_APPEND);
                   file_put_contents("result.txt", "world", FILE_APPEND);
       相當於使用了fopen()、fwrite、fclose() 這三個函數

2、file_get_contents     從檔案中讀取數據 [讀入到一個字串中] 
       語法:file_get_contents(path,include_path,context,start,max_length)
       範例:echo file_get_contents("test.txt");
       輸出:This is a test file with test text.

3、file()  從檔案讀取數據 [將整個檔案讀入到一個數組],陣列中的每個單元都是檔案中相應的一行,包括換行符在內。
       語法:file(path,include_path,context)
       範例: print_r(file("test.txt"));
       輸出: Array
                  (
                       [0] => Hello World. Testing testing!
                       [1] => Another day, another line.
                       [2] => If the array picks up this line,
                       [3] => then is it a pickup line?
                  )

4、dirname()  獲取資料夾路徑
     範例:$file = "D:/phpstudy_pro/WWW/wordpress/wp-content/uploads/2020/08/1595816771-450x517.jpeg";
               echo dirname($file);
     輸出:D:/phpstudy_pro/WWW/wordpress/wp-content/uploads/2020/08
     注:dirname輸出時最後不包括 /

5、basename()  獲取檔名
     範例:$file = "D:/phpstudy_pro/WWW/wordpress/wp-content/uploads/2020/08/1595816771-450x517.jpeg";
               echo basename($file);
     輸出:1595816771-450x517.jpeg

6、pathinfo() 獲取副檔名
     範例:$file = "D:/phpstudy_pro/WWW/wordpress/wp-content/uploads/2020/08/1595816771-450x517.jpeg";
               echo pathinfo($file);
     輸出:jpeg

7、FILE_APPEND        用於文字追加
       經常用來在不同伺服器中(windows,mac,linux)作爲換行符的判斷。
       如 : file_put_contents('./data/llpay1.txt',$data.PHP_EOL,FILE_APPEND);

       PHP_EOL   換行符【提高程式碼的原始碼級可移植性】
        (1)unix系列用 \n
        (2)windows系列用 \r\n
        (3)mac用 \r


影象處理常式
1、imagecreatetruecolor($width, $height)   建立畫布(新建真彩色影象)預設爲黑色
2、imagecreate(int $x_size , int $y_size)  建立畫布 (新建基於調色板的影象)
     不同點:建立畫布和爲畫布填充顏色的流程不一樣
3、imagecolorallocate( resource $image , int $red , int $green , int $blue )  爲一幅影象分配顏色
4、imagefill( resource $image , int $x , int $y , int $color )   區域顏色填充
5、imagestring( resource $image , int $font , int $x , int $y , string $s , int $col ) 水平地畫一行字串
6、imagepng/imagejpeg/imagegif/imagebmp ( resource $image [, string $filename ] )  以 PNG/JPEG/GIF/BMP 格式將影象輸出到瀏覽器或檔案
7、imagecreatefromgif/imagecreatefrompng/imagecreatefromjpeg/imagecreatefrombmp ($filename)   由檔案或 URL 建立一個新圖象。
8、imagedestroy($image)   銷燬影象
9、imagesx/imagesy ( resource $image ) 取得影象寬度/高度
10、getimagesize ( string $filename [, array &$imageinfo ] )   取得影象大小  如:list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
11、gd_info()    取得當前安裝的 GD 庫的資訊
12、getimagesizefromstring ( string $imagedata [, array &$imageinfo ] )   從字串中獲取影象尺寸資訊
13、imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )    重採樣拷貝部分影象並調整大小
       參數:$dst_image 新目標影象資源(需要重新建立), $src_image  原影象資源,$dst_x 目標 X 座標點, $dst_y 目標 Y 座標點,dst_w 目標寬度,dst_h 目標高度。
       範例:imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

14、imagecopyresized ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )      拷貝部分影象並調整大小
       範例:imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

綜合範例:
    範例1:    //設定檔案型別爲影象
    header('Content-Type:image/png');
    //建立畫布
    $image = imagecreatetruecolor(200,200);
    //爲畫布分配顏色
    $color = imagecolorallocate($image,174,48,96);
    //填充顏色
    imagefill($image,0,0,$color);
    //生成影象
    imagepng($image);

    //設定檔案型別爲影象
    header('Content-Type:image/png');
    //建立畫布
    $image = imagecreate(200,200);
    //爲畫布分配顏色並填充畫布
    $color = imagecolorallocate($image,174,48,96);
    //生成影象
    imagepng($image);
    //儲存影象,生成影象和儲存影象需要分爲兩步,要麼只能生成,要麼只能儲存
    imgaepng($image,'./1.png');

     範例2:$newImg  = imagecreatetruecolor($des_w, $des_h);  //建立畫布
        $white      = imagecolorallocate($newImg, 255,255, 255);   //分配顏色
        imagefill($newImg, 0, 0, $white);  //填充顏色
        $img     = imagecreatefrompng($src_file);
        $imgName = strtotime(date('YmdHis'));
        //縮放
       imagecopyresampled($newImg, $img, $mid_x, $mid_y, 0, 0, $des_wid, $des_hei, $width, $height);
    imagepng($newImg, $imgSrc); //生成影象
    imagedestroy($img);
        imagedestroy($newImg);  //銷燬影象


關於PHP重定向
 
     方法一:header("Location: index.php");  
     方法二:echo "<scrīpt>window.location ="$PHP_SELF";</scrīpt>";  
     方法三:echo "<META HTTP-EQUIV="Refresh" CONTENT="0; URL=index.php">"; 


PHP 常用魔術常數
(1)__LINE__     得到檔案中當前行號
(2)__FILE__      檔案的完整路徑和檔名,如果用在被包含的檔案中,則返回被包含的檔名
(3)__DIR__       檔案所在的目錄。如果所在被包括檔案中,則返回被包括的檔案所在的目錄。等價於 dirname(__FILE__)
(4)__FUNCTION__    函數名稱
(5)__CLASS__    類的名稱
(6)__METHOD__  類的方法名
(7)__NAMESPACE__   當前名稱空間的名稱


PHP 超全域性變數
(1)$GLOBALS  儲存全域性作用域中的變數
(2)$_SERVER   獲取伺服器的相關資訊【包含頭資訊(header),路徑(path),指令碼位置(script locations)】
         常用參數: $_SERVER['SERVER_ADDR']              當前執行指令碼所在的伺服器IP
                          $_SERVER['SERVER_NAME']             當前執行指令碼所在的伺服器的主機名
                          $_SERVER['REQUEST_METHOD']      存取頁面的請求方式
                          $_SERVER['HTTP_HOST']                  當前請求頭中Host
                          $_SERVER['HTTP_REFERER']             引導使用者代理到當前頁的前一頁的地址
                          $_SERVER['HTTP_USER_AGENT']      當前請求頭中User-Agent:項中的內容,如果存在的話。該字串表明瞭存取該頁面的使用者代理的資訊。
                          $_SERVER['SCRIPT_FILENAME']        當前執行指令碼的絕對路徑
                          $_SERVER['SCRIPT_NAME']              包含當前指令碼的當前路徑
(3)$_REQUEST    獲取POST和GET請求的參數
(4)$_POST        獲取表單的POST請求參數
(5)$_GET          獲取表單的GET請求參數
(6)$_FILES        獲取上傳檔案的的變數
(7)$_ENV          獲取伺服器端環境變數的陣列
(8)$_COOKIE    瀏覽器cookie的操作
          設定cookie:setcookie(name, value, expire, path, domain);
          獲取cookie:$_COOKIE["user"];
          刪除cookie:setcookie("user", "", time()-3600);//設定過期時間
(9)$_SESSION   伺服器端session的操作
            使用session前一定要session_start()啓動session
          儲存session:$_SESSION["name"]="King";//陣列操作
          銷燬session:unset($_SESSION["name"]);//銷燬一個
          session_destroy()和unset($_SESSION);//銷燬所有的session


PHP魔術函數(13個)
  __construct()  範例化物件時被呼叫,當__construct和以類名爲函數名的函數同時存在時,__construct將被呼叫,另一個不被呼叫。
  __destruct()    當刪除一個物件或物件操作終止時被呼叫。
  __call()     物件呼叫某個方法,若方法存在,則直接呼叫;若不存在,則會去呼叫__call函數。
  __get()       讀取一個物件的屬性時,若屬性存在,則直接返回屬性值;若不存在,則會呼叫__get函數。
  __set()        設定一個物件的屬性時,若屬性存在,則直接賦值;若不存在,則會呼叫__set函數。
  __toString()    列印一個物件的時被呼叫。如echo $obj;或print $obj;
  __clone()      克隆物件時被呼叫。如:$t=new Test();$t1=clone $t;
  __sleep()       serialize之前被呼叫。若物件比較大,想刪減一點東東再序列化,可考慮一下此函數。
  __wakeup()     unserialize時被呼叫,做些物件的初始化工作。
  __isset()       檢測一個物件的屬性是否存在時被呼叫。如:isset($c->name)。
  __unset()     unset一個物件的屬性時被呼叫。如:unset($c->name)。
  __set_state()  呼叫var_export時,被呼叫。用__set_state的返回值做爲var_export的返回值。
  __autoload()    範例化一個物件時,如果對應的類不存在,則該方法被呼叫。


php 加密 與 解密函數
(1)base64_encode      加密 - 使用MIME編碼的數據進行Base64
        語法:string base64_encode(string data);
        範例:$string='www.zhix.net智昕網路'; //定義字串
       echo base64_encode($string);  // 輸出編碼後的內容爲 d3d3LnpoaXgubmV05pm65piV572R57uc
        
(2)base64_decode      解密 - 解碼數據的Base64編碼的MIME
        語法:string base64_decode(string data);
        範例:$string='d3d3LnpoaXgubmV05pm65piV572R57uc';     //定義字串
      echo base64_decode($string); //輸出解碼後的內容  www.zhix.net智昕網路