PHP 基礎介紹

PHP 簡介 和 開發環境配置

PHP(Hypertext Preprocessor)是全球最流行的Web程序開發語言(沒有之一)。語法簡單,易于學習、功能強大、靈活易用。PHP、Apache和MySQL的組合已成為Web服務器的一種配置標準。

PHP 入門教程及框架匯總

PHP基礎知識

  • 基本語法

    php腳本以 <?php 開始,以 ?> 結束,默認文件擴展名 ".php":

    <?php
        //PHP 代碼
    ?>
    

    在瀏覽器輸出文本的基礎指令:echo, print, 每個代碼行必須以分號結束,用于把指令集區分開, 注釋分 單行注釋 和 多行注釋。

        echo "Hello World! ";
        echo "歡迎 世界 ";
        
        // 這是 PHP 單行注釋
        /*
            這是
            PHP多行
            注釋
        */
    
  • 基礎數據類型及操作

    • 變量(以 $符合開始,后面跟變量的名稱,變量名必須以字母或者下劃線開始)

      • $符號開始,后面跟變量名稱
      • 變量名以字母或下劃線開始,只能包含字母數字字符以及下劃線(A-z、0-9和_)
      • 變量名不能包含空格,區分 大小寫($y 和 $Y 是兩個不同的變量)
      • 變量作用域:local、global、static、parameter
      • 局部和全局作用域,全局變量存儲在一個名為 $GLOBALS[index] 的數組中。 index 保存變量的名稱。
      <?php
          $x=5; // 全局作用域
          $y=10;
          function myTest() 
          { 
              $y=10; // 局部變量 
          }
          
          myTest();
          echo "變量 y 為: $y";
          function myTest0()
          {
              global $x,$y; // 函數內訪問全局變量
              $y=$x+$y;
              static $z=0;
              echo $z;
              $z++;
          }   
          myTest0();
          echo $y; // 輸出 15   
      ?>
      
    • 數據類型: String(字符串)、Integer(整型)、Float(浮點型)、Boolean(布爾型)、Array(數組)、Object(對象)、NUll(空值)

      通過PHP的 var_dump() 函數可以返回變量的數據類型和值

      $x = "Hello world!";  // 字符串
      $x = 5985; // 整數
      $x = -345; // 負數
      $x = 0x8C; // 十六進制數
      $x = 047;  // 八進制數
      $x = 2.4e3;
      $x = 8E-5;
      $x=true;   // 布爾值
      $cars=array("Volvo","BMW","Toyota");  // 數組
      class Car   // 聲明類對象
      {
        var $color;
        function Car($color="green") {
          $this->color = $color;
        }
        function what_color() {
          return $this->color;
        }
      }
      $x=null;
      var_dump($x);
      
    • 常量 define()函數,默認為全局的

      bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
      

      三個參數:name: 必選參數,常量名稱即標識符; value: 必須參數,常量的值。
      case_insensitive: 可選參數,若設置為 TRUE,則該常量大小寫不敏感,默認為false。

      // 區分大小寫的常量名
      define("GREETING", "歡迎訪問 Runoob.com");
      echo GREETING;    // 輸出 "歡迎訪問 Runoob.com"
      // 不區分大小寫的常量名
      define("GREETING", "歡迎訪問 Runoob.com", true);
      echo greeting;  // 輸出 "歡迎訪問 Runoob.com" 
      
    • 字符串 (文字值變量時,需加 單引號或者雙引號)

      • 并置運算符( . ), 將兩個字符串值連接起來
      • strlen()函數,返回字符串的長度(字符數)
      • dtrpos()函數,查找一個字符或一段指定的文本,找到則返回第一個匹配的字符位置,否則返回FALSE。
      • mb_strlen(), 指定編碼輸出中文字符個數
      $txt='Hello world!'; 
      $txt2="What a nice day!"; 
      echo $txt1 . " " . $txt2; // Hello world! What a nice day!
      echo strlen("Hello world!");  // 輸出 12
      echo strpos("Hello world!","world");  // 輸出 6, 第一個字符的位置為 0
      echo strlen("中文字符");   // 輸出 12,一個中文占 3 個字符數
      echo mb_strlen("中文字符",'utf-8');  // 輸出 4
      
    • 運算符

      • 算數運算符 ( +、-、*、/、%、-x、a.b 和 intdiv() )
      • 賦值運算符 ( =、+=、-=、^=、/=、%=、.= )
      • 遞增/遞減運算符 ( ++x、x++、--x、x--)
      • 比較運算符 ( ==、===、!=、<>、!==、>、<、>=、<= )
      • 邏輯運算符 ( and、or、xor、&&、||、! )
      • 數組運算符 ( +、==、===、!=、<>、!==)
      • 三元運算符 ( ?: )
      • 組合比較符 ( <=> )
    • If...Else 條件語句 (if(){ }、if(){ } else {}、if() {} elseif() { }else { })

    • switch 語句

    <?php
        switch (n)
        {
        case label1:
            如果 n=label1,此處代碼將執行;
            break;
        case label2:
            如果 n=label2,此處代碼將執行;
            break;
        default:
            如果 n 既不等于 label1 也不等于 label2,此處代碼將執行;
        }
    ?>
    
    • 數組 array()

      • count()函數:獲取數組的長度
      • 遍歷數值數組
      <?php
          $cars=array("Volvo","BMW","Toyota");
          $arrlength=count($cars);
           
          for($x=0;$x<$arrlength;$x++)
          {
              echo $cars[$x];
              echo "<br>";
          }
      ?>
      
      • 關聯數組,創建關聯數組的方法:
      $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
      // 或者
      $age['Peter']="35";
      $age['Ben']="37";
      $age['Joe']="43";
      
      • 遍歷關聯數組
      <?php
          $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
           
          foreach($age as $x=>$x_value)
          {
              echo "Key=" . $x . ", Value=" . $x_value;
              echo "<br>";
          }
      ?>
      
  • 數組排序

    • sort() - 升序排列
    • rsort() - 降序排列
    • asort() - 根據關聯數組的值,對數組升序排列
    • ksort() - 根據關聯數組的鍵,對數組升序排列
    • arsort() - 根據關聯數組的值,對數組降序排列
    • krsort() - 根據關聯數組的鍵,對數組降序排列
  • PHP 超級全局變量

    • $GLOBALS 包含全部變量的全局組合數組,變量的名字就是數組的鍵
    • $_SERVER 包含諸如頭信息(header)、路徑(path)、以及腳本位置(script locations)等信息的數組。
    • $_REQUEST 用于收集HTML表單提交的數據
    • $_POST 廣泛應用于收集表單數據,在HTML標簽的指定該屬性:"method="post""
    • $_GET 廣泛應用于收集表單數據,在HTML標簽的指定該屬性:"method="get"
    • $_FILES
    • $_ENV
    • $_COOKIE
    • $_SESSION
  • 函數

    • 內建函數,超1000個 PHP參考手冊
    • 創建 PHP 函數(函數名應能提示它的功能,以字母或者下劃線開頭)
    • 添加函數,為函數添加更多功能,添加參數,參數類似變量
    • 返回值 -- return語句
  • PHP魔法變量

    • LINE :文件中的當前行號。
    • FILE :文件的完整路徑和文件名。如果用在被包含文件中,則返回被包含的文件名。
    • DIR : 文件所在的目錄。如果用在被包括文件中,則返回被包括的文件所在的目錄。
    • FUNCTION :返回該函數被定義時的名字(區分大小寫)。
    • CLASS : 返回該類被定義時的名字(區分大小寫)。
    • TRAIT : Trait 名包括其被聲明的作用區域
    • METHOD : 返回該方法被定義時的名字(區分大小寫)。
    • NAMESPACE : 當前命名空間的名稱(區分大小寫)。
  • 命名空間(namespace)

    • 解決以下兩類問題:
      • 用戶編寫的代碼與PHP內部的類/函數/常量或第三方類/函數/常量之間的名字沖突。
      • 為很長的標識符名稱(通常是為了緩解第一類問題而定義的)創建一個別名(或簡短)的名稱,提高源代碼的可讀性。
    • 定義命名空間:通過關鍵詞 namespace 來聲明,如果一個文件中包含命名空間,它必須在其它所有代碼之前聲明命名空間。
    < ?php  
        namespace MyProject1;  
        // MyProject1 命名空間中的PHP代碼  
         
        namespace MyProject2;  
        // MyProject2 命名空間中的PHP代碼    
         
        // 另一種語法
        namespace MyProject3 {  
         // MyProject3 命名空間中的PHP代碼    
    }  
    ?>
    
    • 子命名空間,命名空間的名字可以使用分層次的方式定義

      <?php
          namespace MyProject\Sub\Level;  //聲明分層次的單個命名空間
          
          const CONNECT_OK = 1;
          class Connection { /* ... */ }
          function Connect() { /* ... */  }
      ?>
      
  • PHP 面向對象

    對象的三個主要特征:

      - 對象的行為:可以對 對象施加那些操作
      - 對象的形態:當施加那些方法是對象如何響應
      - 對象的表示:具體區分在相同的行為與狀態下有什么不同
    

    面向對象內容:類、對象、成員變量、成員函數、繼承、父類、子類、多態、重載、抽象性、封裝、構造函數、析構函數。

    <?php
        class phpClass {
          var $var1;
          var $var2 = "constant string";
          
          function myfunc ($arg1, $arg2) {
             [..]
          }
          [..]
        }
    ?>
    
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,663評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,125評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,506評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,614評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,402評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,934評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,021評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,168評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,690評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,596評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,288評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,027評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,404評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,662評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,398評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,743評論 2 370

推薦閱讀更多精彩內容