指針函數(shù)
next(); //下一個
prev(); //上一個
reset(); //回到第一個
end(); //回到最后一個
each(); //指針移動
key(); //獲取當(dāng)前的下標(biāo)
current(); //獲取當(dāng)前的值
超全局?jǐn)?shù)組
$_SERVER //服務(wù)器變量
$_GET //環(huán)境變量
$_POST //HTTP GET變量
$_ENV //HTTP POST變量
$_FILES //request變量
$_REQUEST //HTTP文件上傳變量
$_COOKIE //HTTP Cookies
$_SESSION //Session變量
$GLOBALS //Global變量
//超全局?jǐn)?shù)組 頁腳預(yù)定義變量
數(shù)組函數(shù)
array_change_key_case // 將數(shù)組中的所有鍵名修改為全大寫或小寫
array_chunk // 將一個數(shù)組分割成多個
array_column // 返回數(shù)組中指定的一列
array_combine // 創(chuàng)建一個數(shù)組钟哥,用一個數(shù)組的值作為其鍵名蓝角,另一個數(shù)組的值作為其值
array_count_values // 統(tǒng)計數(shù)組中所有的值 **
array_diff_assoc // 帶索引檢查計算數(shù)組的差集
array_diff_key // 使用鍵名比較計算數(shù)組的差集
array_diff_uassoc // 用用戶提供的回調(diào)函數(shù)做索引檢查來計算數(shù)組的差集
array_diff_ukey // 用回調(diào)函數(shù)對鍵名比較計算數(shù)組的差集
array_diff // 計算數(shù)組的差集
array_fill_keys // 使用指定的鍵和值填充數(shù)組
array_fill // 用給定的值填充數(shù)組
array_filter // 用回調(diào)函數(shù)過濾數(shù)組中的單元 **
array_flip // 交換數(shù)組中的鍵和值
array_intersect_assoc // 帶索引檢查計算數(shù)組的交集
array_intersect_key // 使用鍵名比較計算數(shù)組的交集
array_intersect_uassoc // 帶索引檢查計算數(shù)組的交集硫豆,用回調(diào)函數(shù)比較索引
array_intersect_ukey // 用回調(diào)函數(shù)比較鍵名來計算數(shù)組的交集
array_intersect // 計算數(shù)組的交集
array_key_exists // 檢查數(shù)組里是否有指定的鍵名或索引 **
array_keys // 返回數(shù)組中部分的或所有的鍵名
array_map // 為數(shù)組的每個元素應(yīng)用回調(diào)函數(shù) **
array_merge_recursive // 遞歸地合并一個或多個數(shù)組
array_merge // 合并一個或多個數(shù)組
array_multisort // 對多個數(shù)組或多維數(shù)組進(jìn)行排序
array_pad // 以指定長度將一個值填充進(jìn)數(shù)組
array_pop // 彈出數(shù)組最后一個單元(出棧)
array_product // 計算數(shù)組中所有值的乘積
array_push // 將一個或多個單元壓入數(shù)組的末尾(入棧)
array_rand // 從數(shù)組中隨機(jī)取出一個或多個單元
array_reduce // 用回調(diào)函數(shù)迭代地將數(shù)組簡化為單一的值
array_replace_recursive // 使用傳遞的數(shù)組遞歸替換第一個數(shù)組的元素
array_replace // 使用傳遞的數(shù)組替換第一個數(shù)組的元素
array_reverse // 返回單元順序相反的數(shù)組
array_search // 在數(shù)組中搜索給定的值垛叨,如果成功則返回首個相應(yīng)的鍵名
array_shift // 將數(shù)組開頭的單元移出數(shù)組
array_slice // 從數(shù)組中取出一段
array_splice // 去掉數(shù)組中的某一部分并用其它值取代
array_sum // 對數(shù)組中所有值求和
array_udiff_assoc // 帶索引檢查計算數(shù)組的差集,用回調(diào)函數(shù)比較數(shù)據(jù)
array_udiff_uassoc // 帶索引檢查計算數(shù)組的差集装畅,用回調(diào)函數(shù)比較數(shù)據(jù)和索引
array_udiff // 用回調(diào)函數(shù)比較數(shù)據(jù)來計算數(shù)組的差集
array_uintersect_assoc // 帶索引檢查計算數(shù)組的交集靠娱,用回調(diào)函數(shù)比較數(shù)據(jù)
array_uintersect_uassoc // 帶索引檢查計算數(shù)組的交集,用單獨的回調(diào)函數(shù)比較數(shù)據(jù)和索引
array_uintersect // 計算數(shù)組的交集掠兄,用回調(diào)函數(shù)比較數(shù)據(jù)
array_unique // 移除數(shù)組中重復(fù)的值
array_unshift // 在數(shù)組開頭插入一個或多個單元
array_values // 返回數(shù)組中所有的值 **
array_walk_recursive // 對數(shù)組中的每個成員遞歸地應(yīng)用用戶函數(shù)
array_walk // 使用用戶自定義函數(shù)對數(shù)組中的每個元素做回調(diào)處理 **
arsort // 對數(shù)組進(jìn)行逆向排序并保持索引關(guān)系
asort // 對數(shù)組進(jìn)行排序并保持索引關(guān)系
compact // 建立一個數(shù)組像云,包括變量名和它們的值
count // 計算數(shù)組中的單元數(shù)目,或?qū)ο笾械膶傩詡€數(shù) **
current // 返回數(shù)組中的當(dāng)前單元
each // 返回數(shù)組中當(dāng)前的鍵/值對并將數(shù)組指針向前移動一步
end // 將數(shù)組的內(nèi)部指針指向最后一個單元
extract // 從數(shù)組中將變量導(dǎo)入到當(dāng)前的符號表
in_array // 檢查數(shù)組中是否存在某個值
key_exists // 別名 array_key_exists
key // 從關(guān)聯(lián)數(shù)組中取得鍵名
krsort // 對數(shù)組按照鍵名逆向排序
ksort // 對數(shù)組按照鍵名排序
list // 把數(shù)組中的值賦給一組變量
natcasesort // 用“自然排序”算法對數(shù)組進(jìn)行不區(qū)分大小寫字母的排序
natsort // 用“自然排序”算法對數(shù)組排序
next // 將數(shù)組中的內(nèi)部指針向前移動一位
pos // current 的別名
prev // 將數(shù)組的內(nèi)部指針倒回一位
range // 根據(jù)范圍創(chuàng)建數(shù)組蚂夕,包含指定的元素
reset // 將數(shù)組的內(nèi)部指針指向第一個單元
rsort // 對數(shù)組逆向排序
shuffle // 打亂數(shù)組
sizeof // count 的別名
sort // 對數(shù)組排序
uasort // 使用用戶自定義的比較函數(shù)對數(shù)組中的值進(jìn)行排序并保持索引關(guān)聯(lián)
uksort // 使用用戶自定義的比較函數(shù)對數(shù)組中的鍵名進(jìn)行排序
usort // 使用用戶自定義的比較函數(shù)對數(shù)組中的值進(jìn)行排序
array // 新建一個數(shù)組
類
- 子類使用extends繼承父類迅诬,子烈可以將父類中所有的內(nèi)容都繼承過來
- private 這是私有修飾符,只能自己用婿牍,不能其他類用侈贷,包括自己的子類也不能用。
- proteced 這個是保護(hù)的權(quán)限等脂,只能是自己和自己的子類可以使用的成員俏蛮,不能在外面使用。
- public 這個是公開的權(quán)限上遥,所有都可以用搏屑、自己、子類粉楚、類外部都可以使用.
- 對象->成員
- 類::成員
- parent::成員 使用parent::訪問父類中被覆蓋的方法 構(gòu)造方法也可以覆蓋
- static 可以修改屬性和方法辣恋,不能修飾類
- 使用static修飾成員屬性,存在內(nèi)存的初始化靜態(tài)段模软。
- 可以被所有同一類的對象共用伟骨。
- 第一個用到類(類名第一次出現(xiàn)),類在加載到內(nèi)存時,就已經(jīng)將靜態(tài)成員加到內(nèi)存了燃异。
- 靜態(tài)的成員一定要使用類來訪問携狭。 ojb::
obj = new obj(); $obj->dd;
- self可以在類中的方法中,代表自己類的(
dd;
- 靜態(tài)成員一旦加載特铝,只有腳本結(jié)束才會被釋放暑中。
- 在靜態(tài)的方法中壹瘟,不能訪問非靜態(tài)成員的鲫剿。 換句話說就是在靜態(tài)方法當(dāng)中不能使用$this->關(guān)鍵字
- 只要是能使用靜態(tài)的環(huán)境下聲明方法,就是最好使用靜態(tài)方法(效率)
- count 修飾的成員屬性為常量稻轨,只能修飾成員屬性
- 常量建議使用大寫灵莲,不能使用$
- 常量一定要在聲明時就給好初始值
- 常量的訪問方式和static的訪問方式相同,但只能讀
- 在類外部使用 類名::常量名
- 在類的內(nèi)部用 self::常量名
|
private |
protected |
public(默認(rèn)) |
自己類中 |
是 |
是 |
是 |
子類中 |
|
是 |
是 |
類的外部 |
|
|
是 |
類 抽象方法和抽象類
- 抽象方法定義:一個方法如果沒有方法體(一個方法殴俱,不使用{},直接使用分好結(jié)束的方法政冻,才是沒有方法體的方法),則這個方法就是抽象方法
- 聲明一個方法枚抵,不使用{},而直接分號結(jié)束。
- 如果是抽象方法明场,必須使用abstract(抽象關(guān)鍵字來修飾)
- 抽象類定義:如果一個類中有一個方法是抽象方法汽摹,則這個類就是抽象類。如果聲明一個抽象類苦锨,則這個類不必須要使用 abstract關(guān)鍵字來修飾
- 只要使用abstract 修飾的類逼泣,就是抽象類。(可以沒有抽象方法)
- 抽象類是一種特殊的類舟舒,特殊在抽象類中可以有抽象方法拉庶。
- 除了在抽象類中可以有抽象方法以外,和正常的類完全一樣秃励。
abstract class Demo
{
public $name;
public $age;
//特殊的方法抽象方法的存在
abstract function say();
abstract function eat();
public function run()
{
echo "Hello World~!";
}
}
類 抽象類和接口
- 抽象類是一種抽象的類氏仗,接口是一種特殊的抽象類,接口也是一種特殊的類
- 抽象類和接口中都有抽象方法夺鲜。
- 抽象類和接口都不能創(chuàng)建實例對象皆尔。
- 抽象類和接口使用意義也就是作用相同。 (都是定義一些規(guī)范)
-
接口和對象相比:
- 接口中的方法币励,必須全要是抽象方法(不能用不抽象的方法)
- 接口中的成員屬性床佳,必須是常量(不能是變量)
- 所有的權(quán)限必須是共有的(public)
- 聲明接口不是用class,而使用interface
-
接口應(yīng)用的有些細(xì)節(jié):
- 可以使用extends 讓一個接口繼承另一個接口(接口和接口----只有擴(kuò)展新抽象方法,沒有覆蓋的關(guān)系)
- 可以使用一個類來實現(xiàn)接口中的全部方法榄审,也可以使用一個抽象類砌们,來實現(xiàn)接口中的部分方法
- (類與接口,抽象類與接口--覆蓋--重寫搁进,實現(xiàn)接口中的抽象方法)
- 就不要使用extends 這個關(guān)鍵字浪感,使用implements實現(xiàn)
- implements 相當(dāng)于 extends extends繼承(擴(kuò)展)。在php當(dāng)中一個類只能有一個父類
//聲明一個接口使用 interface
interface Demo
{
const NAME = "deme";
const SEX = "1";
public function test();
public function test2();
public function test3();
}
interface Test extends Demo
{
public function test4();
}
abstract class Hello implements Test
{
}
類 多態(tài)特性
interface USB
{
const OSD = 12;
public function load();
public function run();
public function stop();
}
class Cumputer
{
public function useUSB(USB $usb)
{
$usb->load();
$usb->run();
$usb->stop();
}
}
class Mouse implements USB
{
static $keys = '鼠標(biāo)';
public function load()
{
// TODO: Implement load() method.
echo "加載".self::$keys."成功".PHP_EOL;
}
public function run()
{
// TODO: Implement run() method.
echo "運行".self::$keys."功能".PHP_EOL;
}
public function stop()
{
// TODO: Implement stop() method.
echo "結(jié)束".self::$keys."成功".PHP_EOL;
}
}
class KeyPress implements USB
{
static $keys = '鍵盤';
public function load()
{
// TODO: Implement load() method.
echo "加載".self::$keys."成功".PHP_EOL;
}
public function run()
{
// TODO: Implement run() method.
echo "運行".self::$keys."功能".PHP_EOL;
}
public function stop()
{
// TODO: Implement stop() method.
echo "結(jié)束".self::$keys."成功".PHP_EOL;
}
}
class Worker
{
public function use()
{
$c = new Cumputer();
$m = new Mouse();
$k = new KeyPress();
$c->useUSB($m);
}
}
$w = new Worker();
$w->use();