php基礎知識大全

才智咖 人氣:2.25W

PHP是一種非常流行的開源服務器端指令碼語言,下面小編整理了php基礎知識大全,希望對大家有幫助!

php基礎知識大全

 PHP 標記

當解析一個檔案時,PHP 會尋找起始和結束標記,也就是 ,這告訴 PHP 開始和停止解析二者之間的程式碼。此種解析方式使得 PHP 可以被嵌入到各種不同的文件中去,而任何起始和結束標記之外的部分都會被 PHP 解析器忽略

PHP 也支援其他標記,但是!由於各種原因和理由,請只使用“”

echo 'hello world';

?>

PHP 支援 8 種原始資料型別

四種純量型別:布林型、整型、浮點型、字串

兩種複合型別:陣列、物件

兩種特殊型別:資源、null

// 布林型:true 和 false

$var = true;

// 整型

$var = 1;

// 浮點型

$var = 3.14;

// 字串

$var = 'girl friend';

// 陣列

$var = [true, 1, 3.14, 'girl friend'];

//物件

class Test{

public $value = '';

}

$var = new Test();// 類Test的物件

// 資源型別指檔案、資料庫等控制代碼,因此這裡不舉例

// null

$var = null;

 變數

PHP 中的變數用一個美元符號後面跟變數名來表示。變數名是區分大小寫的

一個有效的變數名由字母或者下劃線開頭,後面跟上任意數量的字母,數字,或者下劃線

如:$var 、 $_var 、 $_1 、 $var1 ……

不合法變數的例子: $1 、1 、 var ……

PHP 的變數是動態設定和使用的,這表示,你不需要像 java 等語言那樣,需要使用一個字首(或其他)的方式去宣告一個變數的型別,而且,PHP 變數的型別是根據上下文語境去判定,因此上面關於型別的例子是可以成功執行的,$var 最終的值會變成 null

 常量

常量是一個簡單值的識別符號(名字),常量預設為大小寫敏感。傳統上常量識別符號總是大寫的

下面這個出現在 C 語言的笑話,在 PHP 裡是行不通的.,所以,不要和蠢萌的新手開這種玩笑了,同時也建議,不要隨便定義系統自帶的值,因為常量一旦被定義,就無法重新定義!

define("TRUE", false);

 運算子

這一塊和你認識的其他語言的運算子類似,比如 + 就是加法等等,這裡只說明一些需要注意的,具體的在具體篇幅裡會詳細介紹

算術運算子:+,-,*,/,%(求餘)

= 是賦值號,== 是等於號,=== 是全等於(會比較型別),等號還有類似的 != 和 !==

@ 是錯誤控制運算子,可以抑制之後的表示式產生的錯誤,不要依賴它,因為,耗效能以及讓別人無法找出 bug

位運算子:& 按位與,| 按位或,^ 按位異或,~ 按位取反,<< 左移,>> 右移

邏輯運算子:and,or,not 或者 &&,||,!,請一定使用後者,前者可能導致一些問題

遞增(減)運算子:++,–

字串拼接: ‘hello’ . ‘world’

陣列運算子:+聯合,==等於,===全等於(會比較鍵值對順序),還有類似的不等於!= 和 !==,用得不多,沒有人用這種方式去比較陣列,畢竟 PHP 函式很強大

型別運算子:instanceof

 流程控制

if 語句

if (true) {

// 這個分支並不是一個笑話,你可以在註釋某一段程式碼時使用,而且這種寫法適用於所有的程式

}elseif ( $var == 1) {

// == 是等於,在型別不一致時 PHP 會嘗試強制轉換

// 尤其注意數字的強制轉換,PHP 會嘗試把和數字比較的東西轉換成數字去比較

// 因此 '1a' == 1 是成立的,a會被丟掉

}else if ( 1 === $var ) {

// 基於 == 的不靠譜比較,請明確瞭解變數型別時,使用 === 代替 ==

// 並且讓常量放在前面是一個好習慣,不會因為少寫了等號變成賦值號而出現意外

}else {

// 以上是關於 if 的需要注意的細節以及 if 流程控制的用法,我是不是太懶了

}

for 語句

for (expr1; expr2; expr3)

for ($i = 1; $i <=10; $i++){...}

請不要在 for 迴圈的上面三個表示式當中寫函式,因為每次迴圈都會執行一遍

如果要迴圈陣列,最好使用 foreach

foreach( $array as $key => $value) {}

此外還有 while 和 do … while 迴圈,這個和其他語言是類似的,值得一提的是,在 PHP 的程式設計之中,使用 foreach 的頻率最高,因為 PHP 的最終運算都是陣列以及字串(所以你看 PHP 的陣列和字串函式是不是特別多和強大)

可以使用 break 和 continue 跳過迴圈

switch 語句

switch($var) {

case 1:

...

break;

case 2:

...

default:

...

}

include 語句

包含並執行指定檔案

require 語句和 include 基本等價,暫時不用區分

include_once 以及 require_once 語句不會重複包含檔案,這是和 include 以及 require 的區別

include '';

 其他

goto 語句、declare 語句

 函式

function test($var1, &$var3, $var2 = 1) {

...

return $result;

}

這是一個函式的定義,其中 $var1 是必填引數,$var2 帶有一個預設值,是可選引數,必填引數不能放在可選引數之後

return 會返回一個函式的值

引數可以使用引用引數,如 $var3,這樣你就可以帶多個引數出來了,這種函式在 PHP 自帶的函式裡很常見

關於函式的內容,和其他語言類似,也有區域性變數、全域性變數、閉包等,這裡暫時先不討論

類與物件

每個類的定義都以關鍵字 class 開頭,後面跟著類名,後面跟著一對花括號,裡面包含有類的屬性與方法的定義,類對大小寫不敏感

一個類可以包含有屬於自己的常量,變數(稱為“屬性”)以及函式(稱為“方法”)

class A{

public $var1 = 1;

protected $var2;

private $var3;

public function test(){}

}

當一個方法在類定義內部被呼叫時,有一個可用的偽變數 $this。$this 是一個到主叫物件的引用

class A{

...

public function test(){

return $this->var2; // protected 屬性 $var2 沒有初始化,因此返回一個null

}

}

要建立一個類的例項,必須使用 new 關鍵字

...

$a = new A();

一個類可以在宣告中用 extends 關鍵字繼承另一個類的方法和屬性。PHP不支援多重繼承,一個類只能繼承一個基類

class B extends A {

...

}

 名稱空間

PHP 名稱空間提供了一種將相關的類、函式和常量組合到一起的途徑,用來解決名字衝突或者不好起名字的問題

名稱空間通過關鍵字namespace 來宣告。如果一個檔案中包含名稱空間,它必須在其它所有程式碼之前宣告名稱空間

namespace MyTest;

...

由於在我們在討論 PHP 的時候,可能大多數情況都是講網站,而如今 PHP 出現了大量的 web 框架,這些框架大多數也使用了名稱空間(PHP 5.3 以下沒有名稱空間),而他們基本上都會一個 PHP 檔案對應一個類,因此,我們給名稱空間命名的時候基本遵循和類的名字一致,都是大駝峰寫法

異常處理

function inverse($num){

if ($num == 0) {

throw new Exception('錯誤:分母為0!');

}

return 1 / $num;

}

try {

echo inverse(2); // 返回 0.5

echo inverse(0); // 丟擲異常

} catch (Exception $e) {

echo $e->getMessage();

}

我們想要寫一個計算倒數的函式,在函式裡,我們必須自己判斷分母是不是等於 0, 然後把異常丟擲。

TAGS:PHP