一、PHP類型: 1.
標(biāo)量:boolean integer float string 2.
復(fù)合:array object callable 3.
特殊:resource null 二、預(yù)定義變量: 1.
超全局變量: 1)
$GLOBALS:引用全局作用域中可用的全部變量 2)
$_SERVER:服務(wù)器和執(zhí)行環(huán)境信息 a)
$_SERVER['SERVER_ADDR']:服務(wù)器ip地址 b)
$_SERVER['SERVER_NAME']:服務(wù)器主機(jī)名 c)
$_SERVER['SERVER_SOFTWARE']:服務(wù)器標(biāo)識字符串 d)
$_SERVER['SERVER_PROTOCOL']:請求頁面時通信協(xié)議的名稱及版本 e)
$_SERVER['REMOTE_ADDR']:瀏覽當(dāng)前頁面用戶ip地址 f)
$_SERVER['REMOTE_HOST']:瀏覽當(dāng)前頁面用戶主機(jī)名 3)
$_GET 4)
$_POST 5)
$_FILE 6)
$_COOKIE 7)
$_SESSION 8)
$_REQUEST:$_GET、$_POST、$_COOKIE 9)
$_ENV:環(huán)境變量 10)
$php_errormsg:前一個錯誤信息 三、常量: 1.
常量只包含標(biāo)量數(shù)據(jù) 2.
常量不可取消或重新定義 3.
常量可在任何地方定義和訪問 4.
常量相關(guān)函數(shù): 1)
define()|const:定義常量 2)
constant():獲取常量的值 3)
get_defined_constants():獲取常量列表 4)
defined():判斷是否定義該常量 5.
預(yù)定義常量: 1)
E_ERROR 2)
E_WARNING 3)
.. 4)
TRUE 5)
FALSE 6)
NULL 6.
魔術(shù)常量: 1)
__LINE__:當(dāng)前行號 2)
__FILE__:文件完整路徑和文件名 3)
__DIR__:文件所在的目錄 4)
__FUNCTION__:函數(shù)名稱 5)
__CLASS__:類的名稱 6)
__TRAIT__:Trait 的名字 7)
__METHOD__:類的方法名 8)
__NAMESPACE__:當(dāng)前命名空間的名稱 四、類與對象 1.
屬性 2.
類常量 const NAME='apple'; 3.
類自動加載 1)
spl_autoload_register() 注冊任意數(shù)量的自動加載器 spl_autoload_register(function ($class_name) { require_once $class_name . '.php'; }); 4.
構(gòu)造函數(shù)和析構(gòu)函數(shù) 1)
__construct():構(gòu)造函數(shù) 2)
__destruct():析構(gòu)函數(shù) 5.
訪問控制:public private protected 6.
對象繼承:extends 7.
范圍解析符: ::用于訪問靜態(tài)成員、類常量、覆蓋類中的屬性和方法 8.
static:靜態(tài)關(guān)鍵字 不可用->操作符訪問 必需用::訪問 9.
抽象類:abstract 1)
抽象類不能被實(shí)例化 2)
類中有一個方法被聲明為抽象的就必須聲明為抽象類 3)
繼承一個抽象類的時候,子類必須定義父類中的所有抽象方法 4)
方法的訪問控制必須和父類中一樣(或者更為寬松) 5)
方法的調(diào)用方式必須匹配,即類型和所需參數(shù)數(shù)量必須一致 6)
強(qiáng)制子類定義父類中的抽象方法 7)
抽象方法僅需要定義需要的參數(shù) 10.
對象接口:interface(聲明接口) 聲明的時候接口中的方法可定義方法名和參數(shù),函數(shù)體都為空 1)
實(shí)現(xiàn):implements 實(shí)現(xiàn)的時候,用類的方法實(shí)現(xiàn)相應(yīng)接口方法中的方法 // 聲明一個'iTemplate'接口 interface
iTemplate { public function
setVariable($name, $var); public function
getHtml($template); } // 實(shí)現(xiàn)接口 class Template
implements iTemplate { private $vars =
array(); public function
setVariable($name, $var) { $this->vars[$name]
= $var; } //沒有getHtml方法的話是不對的,實(shí)現(xiàn)接口的類必須包含所有接口中的方法 public function
getHtml($template) { foreach($this->vars
as $name => $value) { $template =
str_replace('{' . $name . '}', $value, $template); } return $template; } } 2)
繼承:extends 可繼承多個接口 //trait:代碼復(fù)用 <?php trait
ezcReflectionReturnInfo { function
getReturnType() { /*1*/ } function
getReturnDescription() { /*2*/ } } class
ezcReflectionMethod extends ReflectionMethod { use
ezcReflectionReturnInfo; /* ... */ } class
ezcReflectionFunction extends ReflectionFunction { use
ezcReflectionReturnInfo; /* ... */ } ?> 11.
魔術(shù)方法 1)
__construct() 構(gòu)造 2)
__destruct() 析構(gòu) 3)
__call() 在對象中調(diào)用一個不可訪問方法時,__call()
會被調(diào)用。 4)
__callStatic() 在靜態(tài)上下文中調(diào)用一個不可訪問方法時,__callStatic() 會被調(diào)用 5)
__get() 讀取不可訪問屬性的值時,__get() 會被調(diào)用 6)
__set() 在給不可訪問屬性賦值時,__set() 會被調(diào)用。 7)
__isset() 當(dāng)對不可訪問屬性調(diào)用 isset() 或 empty() 時,__isset() 會被調(diào)用。 8)
__unset() 當(dāng)對不可訪問屬性調(diào)用 unset() 時,__unset() 會被調(diào)用。 9)
__sleep() a)
serialize() 函數(shù)會檢查類中是否存在一個魔術(shù)方法 __sleep()。 b)
如果存在,該方法會先被調(diào)用,然后才執(zhí)行序列化操作。 c)
此功能可以用于清理對象,并返回一個包含對象中所有應(yīng)被序列化的變量名稱的數(shù)組。 d)
如果該方法未返回任何內(nèi)容,則 NULL 被序列化,并產(chǎn)生一個 E_NOTICE 級別的錯誤。 10)
__wakeup() a)
unserialize() 會檢查是否存在一個
__wakeup() 方法。 b)
如果存在,則會先調(diào)用 __wakeup 方法,預(yù)先準(zhǔn)備對象需要的資源。 11)
__toString() 用于一個類被當(dāng)成字符串時應(yīng)怎樣回應(yīng) 12)
__invoke() 當(dāng)嘗試以調(diào)用函數(shù)的方式調(diào)用一個對象時,__invoke()
方法會被自動調(diào)用 13)
__set_state() 當(dāng)調(diào)用 var_export() 導(dǎo)出類時,此靜態(tài) 方法會被調(diào)用 14)
__clone() a)
當(dāng)復(fù)制完成時,如果定義了 __clone() 方法, b)
則新創(chuàng)建的對象(復(fù)制生成的對象)中的 __clone() 方法會被調(diào)用, c)
可用于修改屬性的值(如果有必要的話) 15)
__debugInfo() 12.
final關(guān)鍵字:如果父類中的方法被聲明為 final,則子類無法覆蓋該方法。如果一個類被聲明為 final,則不能被繼承。 13.
對象比較:==和=== 14.
對象復(fù)制:__clone 15.
類型約束:函數(shù)的參數(shù)可以指定必須為對象(在函數(shù)原型里面指定類的名字),接口,NULL,數(shù)組或者callable 16.
后期靜態(tài)綁定:static::who() 1)
static:: 不再被解析為定義當(dāng)前方法所在的類,而是在實(shí)際運(yùn)行時計算的 17.
對象序列化: 1)
serialize() 2)
unserialize() 18.
命名空間: 1)
namespace關(guān)鍵字 顯式訪問當(dāng)前命名空間或子命名空間中的元素 等價于類中的 self 操作符 2) __NAMESPACE__ 包含當(dāng)前命名空間名稱的字符串 |
|