變量的傳值與引用。
引用: 不同的變量名指向同一塊內(nèi)存地址 取消copy on write機制變量的類型轉(zhuǎn)換和判斷類型方法拷姿。
判斷是不是int, 轉(zhuǎn)換成int
is_int, intval判斷是不是string, 轉(zhuǎn)換成string
is_string, (string)判斷是不是array, 轉(zhuǎn)換成array
is_array, (array)判斷是不是bool, 轉(zhuǎn)換成bool
is_bool, (bool)判斷是不是浮點型, 轉(zhuǎn)換成浮點數(shù)
is_float (float)判斷是不是obj, 轉(zhuǎn)換成obj
is_object, (object)判斷是不是null, 轉(zhuǎn)換成null
is_null
php運算符優(yōu)先級匀们,一般是寫出運算符的運算結(jié)果缴淋。
遞增 遞減 > ! > 算數(shù)運算符 > 大小比較 > 邏輯與 > 邏輯或 > 三目 > 賦值PHP中函數(shù)傳參,閉包,判斷輸出的echo重抖,print是不是函數(shù)等露氮。
匿名函數(shù)(Anonymous functions),也叫閉包函數(shù)(closures)钟沛,允許 臨時創(chuàng)建一個沒有指定名稱的函數(shù)畔规。最經(jīng)常用作回調(diào)函數(shù)(callback)參數(shù)的值。當然恨统,也有其它應(yīng)用的情況叁扫。
匿名函數(shù)目前是通過 Closure 類來實現(xiàn)的。
<?php
echo preg_replace_callback('~-([a-z])~', function ($match) {
return strtoupper($match[1]);
}, 'hello-world');
// 輸出 helloWorld
?>
閉包函數(shù)也可以作為變量的值來使用畜埋。PHP 會自動把此種表達式轉(zhuǎn)換成內(nèi)置類 Closure 的對象實例莫绣。把一個 closure 對象賦值給一個變量的方式與普通變量賦值的語法是一樣的,最后也要加上分號:
Example #2 匿名函數(shù)變量賦值示例
<?php
$greet = function($name)
{
printf("Hello %s\r\n", $name);
};
$greet('World');
$greet('PHP');
?>
閉包可以從父作用域中繼承變量悠鞍。 任何此類變量都應(yīng)該用 use 語言結(jié)構(gòu)傳遞進去对室。 PHP 7.1 起,不能傳入此類變量: superglobals咖祭、 $this 或者和參數(shù)重名软驰。
Example #3 從父作用域繼承變量
<?php
$message = 'hello';
// 沒有 "use"
$example = function () {
var_dump($message);
};
echo $example();
// 繼承 $message
$example = function () use ($message) {
var_dump($message);
};
echo $example();
// Inherited variable's value is from when the function
// is defined, not when called
$message = 'world';
echo $example();
// Reset message
$message = 'hello';
// Inherit by-reference
$example = function () use (&$message) {
var_dump($message);
};
echo $example();
// The changed value in the parent scope
// is reflected inside the function call
$message = 'world';
echo $example();
// Closures can also accept regular arguments
$example = function ($arg) use ($message) {
var_dump($arg . ' ' . $message);
};
$example("hello");
?>
echo, print 是語言結(jié)構(gòu)不是函數(shù). echo 無返回值, print恒返回1
- PHP數(shù)組,數(shù)組函數(shù)心肪,數(shù)組遍歷锭亏,預(yù)定義數(shù)組(面試必出)。
數(shù)組函數(shù)
array_push
- 從數(shù)組末尾插入
array_pop
- 從數(shù)組末尾彈出
array_unshift
- 從數(shù)組開頭插入
array_shift
- 從數(shù)組開頭彈出
in_array
- 判斷一個元素是否在數(shù)組中
array_diff
- 求索引數(shù)組差集
array_intersect
- 求索引數(shù)組交集
array_column
- 獲取出租某一列的值返回數(shù)組
array_merge
- 合并兩個數(shù)組
array_reverse
- 反轉(zhuǎn)數(shù)組
array_chunk
- 切割數(shù)組
遍歷數(shù)組
foreach
while list each
for
(索引數(shù)組)
預(yù)定義數(shù)組
預(yù)定義數(shù)組 | 說明 |
---|---|
$_SERVER | 變量由web服務(wù)器設(shè)定或者直接與當前腳本的執(zhí)行環(huán)境相關(guān)聯(lián) |
$_ENV | 執(zhí)行環(huán)境提交至腳本的變量 |
$_GET | 經(jīng)由URL請求提交至腳本的變量 |
$_POST | 經(jīng)由http post方法提交至腳本的變量 |
$_REQUEST | 經(jīng)由get硬鞍、post和cookie機制提交至腳本的變量慧瘤,因此該數(shù)組并不值得信任 |
$_FILES | 經(jīng)由http、post文件上傳而提交至腳本的變量 |
$_COOKIE | 經(jīng)由http cookies方法提交至腳本的變量 |
$_SESSION | 當前注冊給腳本會話的變量 |
$GLOBALS | 包含一個引用指向每個當前腳本的全局變量范圍內(nèi)有效的變量固该。該數(shù)組的鍵名為全局變量的名稱 |
- PHP面向?qū)ο蠊酰g(shù)方法,封裝伐坏、繼承怔匣、多態(tài)。設(shè)計模式桦沉,包括(單利每瞒、工廠、迭代器纯露、裝飾剿骨、命令、策略)埠褪。
魔術(shù)方法
- __construct() - 構(gòu)造方法 被實例化時調(diào)用
- __destruct() - 析構(gòu)方法 會在到某個對象的所有引用都被刪除或者當對象被顯式銷毀時執(zhí)行浓利。
- __call() - 在對象中調(diào)用一個不可訪問方法時被調(diào)用
- __callStatic() - 在靜態(tài)上下文中調(diào)用一個不可訪問方法時挤庇,__callStatic 會被調(diào)用。
- __get() - 訪問不可訪問屬性時被調(diào)用
- __set() - 給不可訪問屬性賦值時被調(diào)用
- __isset() - 對不可訪問屬性調(diào)用 isset會被調(diào)用贷掖。
- __unset() - 當對不可訪問屬性調(diào)用 unset 時嫡秕,__unset 會被調(diào)用。
- __sleep() - serialize對象時被調(diào)用
- __wakeup() - unserialize 對象時被調(diào)用
- __toString() - 用于一個類被當成字符串時應(yīng)怎樣回應(yīng)苹威。例如 echo $obj; 應(yīng)該顯示些什么淘菩。此方法必須返回一個字符串,否則將發(fā)出一條 E_RECOVERABLE_ERROR 級別的致命錯誤屠升。
- __clone() - 對象被克隆時調(diào)用
設(shè)計模式
- 工廠模式
- 單例模式
- 注冊樹模式
- 適配器模式
- 觀察者模式
- 策略模式
設(shè)計模式詳解 https://www.cnblogs.com/leedaily/p/8250158.html