本文是復(fù)習(xí)所寫榜聂,并不會涵蓋一些基礎(chǔ)知識點
變量
命名
有數(shù)字、字母的畴、下劃線組成末融,不能以數(shù)字開頭,用正則表達式描述為^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
晤锥。這大概是所有語言通用的規(guī)則掉蔬,只不過PHP中變量名前要加上$
賦值
變量有兩種賦值方式:傳值賦值
和引用賦值
廊宪。
默認是傳值賦值
預(yù)定義變量
PHP提供了大量的預(yù)定義變量,這些變量被分別放到幾個數(shù)組中女轿,稱為預(yù)定數(shù)組箭启。這些數(shù)組在全局范圍內(nèi)生效,所以也被稱為超全局變量
$GLOBALS
$_SERVER
$_GET
$_POST
$_REQUEST
$_SESSION
$_COOKIE
$_ENV
$php_response_header - HTTP 響應(yīng)頭蛉迹,當使用HTTP包裝器時將會被HTTP響應(yīng)頭信息填充
$argc
$argv
作用域
<?php
/*
* 當前文件范圍內(nèi)生效
* 包括require傅寡、include進來的文件
*/
$a = 1;
include 'b.php';
function c()
{
/*
* 函數(shù)內(nèi)部的變量是跟函數(shù)外部的隔離的
* 通過global關(guān)鍵字可以將函數(shù)外部的變量引用進來
*/
global $a;
$d = 2;
$d += $a;
$d += $GLOBALS['a']; // 也可以通過這種方式來訪問$a變量
/*
* 也可以將變量聲明為靜態(tài)的
* 靜態(tài)變量是在編譯階段就分配到特殊的內(nèi)存空間,稱為靜態(tài)空間
* 靜態(tài)變量只會初始化一次北救,并且不會隨著函數(shù)的退出而銷毀
* 千萬不要引用賦值給靜態(tài)變量荐操,不會報錯但是會跟預(yù)期不一致
*/
static $e = 0;
$e += 1;
}
可變變量
<?php
$a = 'hello';
$b = ['hello'];
/*
* 等價于${$a}
* {}是限定符,用來明確范圍
* $a的值是純數(shù)字的話也可以正常執(zhí)行
*/
$a = 'hi';
${$b[0]} = 'hi';
// 類屬性也可以通過這種方式訪問
class Test
{
public $hello = 'class inner';
}
(new Test())->$a;
(new Test())->{$b[0]};
常量
命名
常量命名跟變量命名一樣珍策,只不過不需要前面帶$
定義常量
<?php
/*
* 可以使用define()托启、const定義常量
* 常量值只能是標量或數(shù)組,一但被定義攘宙,其值便無法更改
*
* const定義常量是在預(yù)編譯階段執(zhí)行的屯耸,所以必須處于最頂端的作用域。這就是說不能在函數(shù)蹭劈、循環(huán)疗绣、try/catch語句內(nèi)使用
*/
const BOOK_TOTAL = 20;
define('PRICE', 200);
class Test
{
const BOOKS = [];
}
$a = 'PRICE';
echo constant($a); // 當需要動態(tài)獲取變量的時候,建議使用這種方式
get_defined_constants(); // 獲取所有已定義常量列表
作用域
常量的作用域是全局的
預(yù)定義常量
魔術(shù)常量
__LINE__
__FILE__
__DIR__
__FUNCTION__
__CLASS__
__TRAIT__
__METHOD__
__NAMESPACE__
ClassName::class