PHP 5 0 到 7 1 常用語法糖

2022-08-23 10:57:06 字數 3342 閱讀 9370

型別

boolean

空物件在4.0以後都視為true

string

string的內部結構類似 array, 可以像python一下使用下標訪問字串

$str = '012345';

echo $str[1]; //1

echo $str; //2

array

5.4 以後可以像js一樣定義陣列

$arr = ['one', 'two', 'three']; //感覺方便了很多

全域性變數

時間長不用總會忘記重新整理一下加深下印象

$_server

server_addr ip位址 127.0.0.1

server_name 主機名 localhost

server_software 伺服器型別 nginx

remote_addr 客戶端ip. 127.0.0.1

s$_files

$_files['file']['name'] 原名稱

$_files['file']['type'] mime型別

$_files['file']['size'] 大小

$_files['file']['tmp_name'] 伺服器端臨時名稱

常量5.3之後可以使用const來定義常量

const debug = true;

運算子<=> 比較運算子,7.0 之後支援

echo $a <=> $b;

/*當 $a < $b 時, 表示式返回 -1

當 $a = $b 時, 表達是返回 0

當 $a > $b 時, 表示式返回 1

*/?? 空合併運算子 php7特性。

$name = $_post['name'] ?? ''; //如果前面的值不為null,則返回本身,否則返回後面的值

三元運算子 ?: 5.3以後可以使用

$name = $_post['name'] ?: ''; ////如果前面的值不為null,則返回本身,否則返回後面的值

流程控制

goto 5.3以上有效

操作符可以用來跳轉到程式中的另一位置。該目標位置可以用目標名稱加上冒號來標記,而跳轉指令是 goto 之後接上目標位置的標記。php 中的 goto 有一定限制,目標位置只能位於同乙個檔案和作用域,也就是說無法跳出乙個函式或類方法,也無法跳入到另乙個函式。也無法跳入到任何迴圈或者 switch 結構中。可以跳出迴圈或者 switch,通常的用法是用 goto 代替多層的 break。

goto a;

echo 'foo';

a:echo 'bar';

//輸出 bar

函式變長引數 ..., 5.6以後可用

function dosum(...$arr)

return $sum;

}$arr = [1, 2, 3, 4, 5];

echo dosum(...$arr); // 輸出15

echo dosum(1,2,3,4,5,6); //輸出21

//todo

/**這個語法,我最近總在用。感覺還比較簡單。不過要注意伺服器版本。。最近入了乙個坑。

*/匿名函式(anonymous functions)5.3

也叫閉包函式,在js中很常見。為了防止汙染全域性作用域。5.3 以後php也支援了這種寫法

$test = function($name='li');

$test();

如果想要從父作用域中繼承變數怎麼辦

//這裡定義乙個預設的輸出名字的方式

$tpl = 'my name is ';

//使用 use() 來引用父級的變數,最後輸出結果與上邊一致

$test = function($name='li') use($tpl) ;

$test();

需要注意的是,閉包函式的父作用域,是定義它的作用域,不是呼叫的作用域

類和物件

::class 類的靜態方法,用於獲取類的完全限定名稱,(包含命名空間)

namespace foo

echo test::class; // 輸出 foo\test, 在使用命名空間的情況非常有用

}5.4 新增加的乙個多繼承實現方式trait。下面總結了一下基本概念

1.trait 和 class 是相似的概念,但不能被例項化

2.乙個類可以使用多個trait,優先順序是 class > trait > 父類繼承的方法

3.使用insteadof 來解決 tarit 衝突

4.使用as,來修改方法的訪問控制

5.在trait中也可以使用tarit。和在class中用法一致

trait a

}trait b

public function walk()

}class person

}$obj = new person;

$obj->say(); // echo trait a;

$obj->walk(); // 提示不能訪問乙個受保護的方法

6.在trait中使用, 屬性、靜態屬性、靜態方法、抽象類都是被允許的。

trait test

}class son

$obj = son::createobj();

echo $obj->name; // echo 1

echo $obj === $obj1 ? 0 : 1; // echo 1

5.3 類的後期靜態繫結

官方的解釋是:

該功能從語言內部角度考慮被命名為」後期靜態繫結」。」後期繫結」的意思是說,static:: 不再被解析為定義當前方法所在的類,而是在實際執行時計算的。也可以稱之為」靜態繫結」,因為它可以用於(但不限於)靜態方法的呼叫

乍一看,好像什麼也沒看懂。看看具體的**吧。

class a

public static function test()

}class b extends a

}b::test(); // echo a;

// 上面是乙個正常的呼叫, 輸出了 a

// 當我們把 class a 的 test 方法修改一下。 將 self 改成 static 後

class a

public static function test()

}class b extends a

}b::test(); // echo b;

總結:php5.3新增加了一類關鍵字,static 可以在呼叫函式的方法。用這個關鍵字,來實現了後期靜態繫結。

異常處理

比較簡單記錄一下

1try catch (execption $e)

echo $error; //丟擲異常

mysql常用語法 MySQL常用語法

更新資料 update 表名 set 健名 更改的值 where 建 刪除資料 delete from 表名 where 索引 create index 索引名稱 on 表名 鍵名 建立試圖 create view 檢視名 鍵,鍵 as select matchno,abs won lost fro...

mysql基本常用語法 mysql 常用語法

1.1.開啟 service mysql start 1.2.關閉 service mysql stop 1.3.重啟 service mysql restart 2.1.密碼明文 語法 mysql u使用者名稱 p使用者密碼 舉例 mysql uroot p123456 2.2.密碼密文 語法 m...

wiki常用語法

公司啟用了streber執行部分專案管理工作。streber基於wiki系統建立。在streber中,我們可以建立專案 project 可以為專案建立milestone task等等。與其他專案管理系統一樣,可以為每乙個task分配資源,指定執行時間。由於streber基於wiki組建,具備了wik...