PHP 簡介 和 開發環境配置
PHP(Hypertext Preprocessor)是全球最流行的Web程序開發語言(沒有之一)。語法簡單,易于學習、功能強大、靈活易用。PHP、Apache和MySQL的組合已成為Web服務器的一種配置標準。
- 配置PHP開發環境
- windows下: XAMPP 集成工具
- Mac下:MAMP 集成工具
- Php在線代碼工具: php 在線工具
- PHP 開發工具
PHP 入門教程及框架匯總
- PHP 教程及資料
- 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) { [..] } [..] } ?>