溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP知識(shí)點(diǎn)有哪些

發(fā)布時(shí)間:2021-10-13 10:56:00 來(lái)源:億速云 閱讀:115 作者:小新 欄目:開發(fā)技術(shù)

這篇文章給大家分享的是有關(guān)PHP知識(shí)點(diǎn)有哪些的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

PHP基礎(chǔ)
一、初識(shí)PHP
PHP是與HTML混合使用的嵌入式語(yǔ)言。
1、PHP標(biāo)記
默認(rèn)標(biāo)記<?php ?> 短標(biāo)記<? ?>,需在php.ini中將short_open_tag選項(xiàng)開啟 短標(biāo)記和其他標(biāo)記不提倡使用

2、關(guān)鍵字不區(qū)分大小寫,用戶自定義的類名和函數(shù)名不區(qū)分大小寫,變量名區(qū)分大小寫

3、輸出
boolean print(參數(shù)) 返回布爾值
void echo(參數(shù)) 無(wú)返回值echo的效率要高一點(diǎn)

二、數(shù)據(jù)類型
1、比較兩個(gè)浮點(diǎn)數(shù)的通常方法是先移動(dòng)若干小數(shù)位,然后轉(zhuǎn)換為整型數(shù)據(jù)再進(jìn)行比較。

2、雙引號(hào)做分隔符的字符串支持變量名解析,單引號(hào)做分隔符的字符串不支持變量名解析。
$name="張三";
"$name"=>張三 || '$name'=>$name || "$name先生"=>空 || "{$name}先生"=>張三先生 || "${name}先生"=>張三先生

3、字符串定義的方式:?jiǎn)我?hào),雙引號(hào)和heredoc(<<<heredoc_markheredoc_mark)

4、對(duì)象類型必須顯式的進(jìn)行聲明。類用關(guān)鍵字class定義,使用關(guān)鍵字new生成這個(gè)類的實(shí)例,使用->符號(hào)類訪問類中的屬性和方法
class car{public $cololr;function beep(){}}$mycar = new car; $mycar->color='red'; $mycar->beep();

5、PHP是一種弱語(yǔ)言類型,變量的類型會(huì)根據(jù)賦予的值自行確定,而且往往在變量聲明的同時(shí)進(jìn)行變量初值的賦值。

6、數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換時(shí),只須將需要的類型名寫在變量前的括號(hào)內(nèi)即可。

三、常量和變量
1、定義常量 define("常量名",表達(dá)式或值) 常量名建議全大寫,但不是必需的
使用常量 直接使用定義的常量名,無(wú)須在常量名前加"$"
預(yù)定義常量:_FILE_當(dāng)前PHP程序文件名 _LINE_當(dāng)前PHP程序所在的行數(shù)(在哪指哪)

2、變量不需要顯式的聲明,在對(duì)變量賦初值時(shí)就對(duì)變量進(jìn)行了聲明。如果變量沒有被設(shè)置初值,則其初值即為NULL。

3、變量的賦值:傳值賦值和引用賦值。如$a=&$b; 即b原來(lái)指向了一個(gè)存儲(chǔ)位置,引用賦值后,a也指向了這個(gè)存儲(chǔ)位置,這時(shí),
a或b的銷毀都不會(huì)對(duì)對(duì)方造成任何影響,但是如果其中一個(gè)的值改變了,則另一個(gè)也會(huì)作出相同的改變。

4、訪問預(yù)定義變量之使用超全局變量,總共9個(gè)超全局變量

5、局部變量:在函數(shù)內(nèi)定義的變量 只能在函數(shù)內(nèi)使用
全局變量:在函數(shù)外定義的變量 默認(rèn)只能在函數(shù)外使用
要想在函數(shù)內(nèi)使用全局變量,需要在函數(shù)內(nèi)將變量用global聲明,或者使用超全局變量數(shù)組&GLOBALS["變量名"]
在PHP中,只有函數(shù)能提供局部作用域。
超全局變量$GLOBALS包含了全部的變量
靜態(tài)變量的特點(diǎn):只有在第一次被調(diào)用時(shí)進(jìn)行初始化,函數(shù)結(jié)束后不銷毀,并且下次使用時(shí),該變量還保留原來(lái)的值。
靜態(tài)變量只能在函數(shù)內(nèi)定義和使用。
可變變量:將變量的名字也作為一個(gè)變量來(lái)使用。$a=b;$b=c;$$a=$b=c;
外部變量:使用GET方式能傳遞的數(shù)據(jù)最大為256字節(jié),使用POST最大為2MB

四、流程控制(僅寫與java等其他語(yǔ)言的不同)
1、交互格式(冒號(hào)語(yǔ)法) 不建議使用,經(jīng)典的比較直觀

2、foreach():該語(yǔ)法是專門為數(shù)組設(shè)計(jì)的
第一種格式foreach(target_array as $value) statement
第二種格式foreach(target_array as $key=>$value) statement

3、break 數(shù)字:要跳出的結(jié)構(gòu)的層數(shù)
contiue 數(shù)字:要跳出的結(jié)構(gòu)的層數(shù)

4、exit語(yǔ)句可以結(jié)束當(dāng)前整個(gè)腳本的執(zhí)行,通常用于錯(cuò)誤檢查。
exit; exit("錯(cuò)誤原因");
die()是exit的別名 $conn=mysql_connect("localhost","root","") or die("無(wú)法連接到MySQL服務(wù)器");

五、數(shù)組
1、關(guān)聯(lián)數(shù)組與數(shù)字索引數(shù)組唯一的區(qū)別在于索引的類型。

2、數(shù)字索引數(shù)組
初始化:直接為數(shù)組元素賦值array()函數(shù)
如果數(shù)組不存在,那么為數(shù)組元素賦值的同時(shí)即可創(chuàng)建該數(shù)組
如果數(shù)組元素是按順序排列的數(shù)字,則在對(duì)數(shù)組進(jìn)行初始化時(shí),可以使用range()函數(shù)
range()有3個(gè)參數(shù),第一個(gè)參數(shù)指定初始值,第二個(gè)參數(shù)指定終止值,第三個(gè)參數(shù)可選,用于指定步長(zhǎng)

3、關(guān)聯(lián)數(shù)組
初始化:直接為數(shù)組元素賦值array()函數(shù)

4、與數(shù)組相關(guān)的運(yùn)算符
+ 聯(lián)合 $a+$b 將$附件到$a之后,但是任何索引值沖突的元素將不會(huì)被添加
== 等于 $a==$b 如果$a和$b包含相同元素,返回true(索引值和元素必須都相同) 除了順序,其他必須完全一樣
!= <> 不等于
=== 恒等 如果$a和$b包含相同順序的相同元素,返回true(索引值和元素必須都相同) 必須完全一模一樣
!== 不恒等

5、數(shù)組的排序
boolean sort() 按數(shù)字和字母順序排列 排列后會(huì)賦予新的索引值,原有索引值被刪除
void asort()按升序?qū)?shù)組進(jìn)行排序 排列后保留原來(lái)的索引關(guān)系
integer ksort() 按索引值升序進(jìn)行排列
usort(數(shù)組,方法名)按用戶自定義方法進(jìn)行排序
array_multisort() 一次對(duì)多個(gè)數(shù)組進(jìn)行排序
natsort() 按自然順序排序,排序后保留原有的索引關(guān)系
natcasesort() 自然排序,不區(qū)分大小寫

6、數(shù)組的反向排序
rsort() 對(duì)數(shù)組元素按降序排列
arsort()
krsort()

7、對(duì)數(shù)組進(jìn)行重新排序
boolean shuffle() 對(duì)數(shù)組進(jìn)行隨機(jī)排列
array array_reverse() 將數(shù)組中的元素逆置
array array_flip() 將數(shù)組中的索引與其元素值兌換

8、數(shù)組的遍歷
current() 獲取數(shù)組中當(dāng)前指針?biāo)傅脑刂?br/>next()將數(shù)組的指針向后移動(dòng)一位,返回移動(dòng)后指針?biāo)赶虻脑氐脑刂?br/>prev()將數(shù)組的指針向前移動(dòng)一位,返回移動(dòng)后指針?biāo)赶虻脑氐脑刂?br/>reset()指針設(shè)置回?cái)?shù)組的起始位置
end() 將指針移動(dòng)到數(shù)組的最后一個(gè)元素處
each()返回?cái)?shù)組中當(dāng)前指針?biāo)赶虻摹八饕?元素值”對(duì),并將數(shù)組指針向后移動(dòng)一位
返回一個(gè)包含4個(gè)元素的數(shù)組,且該數(shù)組的索引分別為0,key,1,value
key() 返回?cái)?shù)組當(dāng)前指針?biāo)赶虻乃饕?br/>array_walk()以相同的方式對(duì)數(shù)組中的每一個(gè)元素進(jìn)行處理
array_reduce() 將自定義函數(shù)依次應(yīng)用于數(shù)組的每個(gè)元素
9、其他的數(shù)組操作函數(shù)
list()從一個(gè)數(shù)組中一次提取多個(gè)值,并同時(shí)賦值給多個(gè)變量
count()/sizeof()計(jì)算數(shù)組中元素的個(gè)數(shù)

六、PHP中的字符串
1、訪問字符串中的字符
字符串的三種定義方式:?jiǎn)我?hào)、雙引號(hào)和Heredoc方式
可以將字符串視為數(shù)組來(lái)處理。$test="hello"; $test{0}="h";推薦使用大括號(hào),以免與數(shù)組混淆

2、字符串的格式化
字符串的格式化處理通常包括:去除字符串中多余的空格、大小寫轉(zhuǎn)換、加入和刪除反斜杠和HTML格式化四部分
去除空格和其他符號(hào)

string trim(待處理的字符串,過(guò)濾字符串)
如果不指定過(guò)濾字符串,則默認(rèn)去掉空格、Tab字符、換行符、回車符、字符串結(jié)束符和垂直制表符
可以使用“..”指定需要去除的一個(gè)范圍,例如“a..f” 表示去掉a、b、c、d、e和f
只對(duì)字符串首尾字符進(jìn)行過(guò)濾,即使指定了過(guò)濾字符串,字符串中間部分也不會(huì)參與過(guò)濾
string lrtim(待處理的字符串,過(guò)濾字符串)
去除字符串左邊的空格和其他特殊字符
其他同trim()

string rtrim(待處理的字符串,過(guò)濾字符串),別名函數(shù)chop()
去除字符串右邊的空格和其他特殊字符
其他同trim()

對(duì)字符串大小寫的轉(zhuǎn)換
strtolower(待處理的字符串)將指定字符串中的所有字符轉(zhuǎn)換為小寫
strtoupper(待處理的字符串)將指定字符串中的所有字符轉(zhuǎn)換為大寫
ucfirst(待處理的字符串)檢查指定的字符串,如果指定字符串的第一個(gè)字符是字母,則將其轉(zhuǎn)換為大寫
ucword(待處理的字符串)將指定字符串中的每個(gè)單詞的首字母轉(zhuǎn)換為大寫

加入和刪除反斜杠
在將任何字符串保存到數(shù)據(jù)庫(kù)中之前,應(yīng)該使用addslashes()函數(shù)添加反斜杠;
在顯示用戶數(shù)據(jù)之前,應(yīng)該調(diào)用stripslashes()函數(shù)去除反斜杠
addslashes(待處理的字符串)添加反斜杠
stripslashes(待處理的字符串)刪除反斜杠

HTML格式化
nl2br(待處理的字符串)可以將字符串中的換行符轉(zhuǎn)換成HTML中的標(biāo)簽"<br>",從而在瀏覽器中實(shí)現(xiàn)換行
htmlspecialchars(待處理的字符串,是否轉(zhuǎn)換雙引號(hào)和單引號(hào),字符集)
可以使一些特殊的字符被當(dāng)成普通的文本輸出,而不會(huì)再進(jìn)行HTML解析
第二個(gè)參數(shù):默認(rèn)只對(duì)雙引號(hào)進(jìn)行轉(zhuǎn)換,ENT_COMPAT只轉(zhuǎn)換雙引號(hào) ENT_QUOTES都轉(zhuǎn)換

ENT_NOQUOTES 不進(jìn)行轉(zhuǎn)換
第三個(gè)參數(shù):指定了轉(zhuǎn)換時(shí)所使用的字符集,默認(rèn)為ISO-8859-1
hemlentities(待處理的字符串,是否轉(zhuǎn)換雙引號(hào)和單引號(hào),字符集)
功能同上,但可以轉(zhuǎn)義更多的特殊字符
heml_entity_decode(待處理的字符串,是否轉(zhuǎn)換雙引號(hào)和單引號(hào),字符集)
可以對(duì)顯示字符串進(jìn)行反向轉(zhuǎn)換,轉(zhuǎn)換后的字符串能夠按HTML標(biāo)簽進(jìn)行解析
strip_tags(待處理的字符串,允許保留的HTML標(biāo)簽)
去除所有的HTML和PHP標(biāo)記

3、字符串的連接和分割
explode(分隔符,字符串,被分割的字符串片斷的數(shù)量)按指定的分隔符將一個(gè)字符串分割
如果分隔符是字符串,函數(shù)會(huì)根據(jù)字符串中的每個(gè)字符來(lái)進(jìn)行分割,而不會(huì)根據(jù)整個(gè)分割字符串來(lái)分割
implode(連接符,需要連接成字符串的數(shù)組)將一些字符串通過(guò)指定的連接符連接成一個(gè)字符串
join(連接符,需要連接成字符串的數(shù)組)功能同implode()
substr(字符串,開始位置,提取長(zhǎng)度)從某個(gè)字符串中提取一部分子字符串
開始位置為負(fù),將得到一個(gè)從原字符串尾部開始,長(zhǎng)度為該負(fù)數(shù)絕對(duì)值的子字符串
提取長(zhǎng)度為負(fù),子字符串取到倒數(shù)第“l(fā)ength”個(gè)字符前
這個(gè)不難理解,-就表示從后面開始
strtok(字符串,分隔符)從指定字符串中取出一個(gè)字符串片段
如果分隔符是字符串,函數(shù)會(huì)根據(jù)字符串中的第一個(gè)字符來(lái)進(jìn)行分割,而不會(huì)根據(jù)整個(gè)字符串來(lái)分割
在調(diào)用該函數(shù)對(duì)字符串進(jìn)行連續(xù)分割時(shí),只有第一個(gè)分割時(shí)需要指定參數(shù)str,第一個(gè)分割后,系統(tǒng)會(huì)自動(dòng)
記錄字符串及第一個(gè)分割后的指針位置,繼續(xù)調(diào)用該函數(shù),則會(huì)繼續(xù)從該字符串指針的當(dāng)前位置進(jìn)行分割
。如果希望重置指針到字符串起始位置,只需將字符串重新作為參數(shù)傳遞給該函數(shù)即可。
split(分隔符,字符串,返回字符串個(gè)數(shù))將一個(gè)字符串按指定的分隔符分解為多個(gè)子字符串

4、字符串的比較
可以使用==直接對(duì)字符串進(jìn)行比較
strcmp(字符串1,字符串2)按字典順序,排在后面的大。如果相等,返回0,如果str1大于str2,返回正數(shù),否則負(fù)數(shù)
區(qū)分大小寫
strcasecmp(字符串1,字符串2)同上,不區(qū)分大小寫
strnatcmp(字符串1,字符串2)按自然順序進(jìn)行字符串比較,等于返回0,大于返回正數(shù),小于返回負(fù)數(shù),區(qū)分大小寫
strnatcasecmp(字符串1,字符串2)按自然順序進(jìn)行比較,不區(qū)分大小寫

5、字符串的查找和替換
strstr(被查找的字符串,要查找的關(guān)鍵字)在一個(gè)字符串中查找匹配的字符串或字符,如果查找到,則返回從str字符中該key開始到字符串結(jié)尾的子字符串,如果沒有查到,則返回false,如果不止一個(gè),則返回從第一個(gè)匹配到結(jié) 尾的子字符串
strisstr()功能同上,區(qū)別,該函數(shù)不區(qū)分大小寫
strchr(被查找的字符串,要查找的關(guān)鍵字)在一個(gè)字符串中查找要匹配的子字符串或字符,該函數(shù)從字符串末端開始查找,如果找到一個(gè),則返回從該key開始到字符串結(jié)尾的子字符串,如果多于一個(gè),則返回從尾端開始的第一個(gè)匹配,如果沒有匹配,則返回false
strpos(要查找的字符串,要查找的子字符串或字符,從原始字符串的第offset個(gè)字符開始查找)
 如果找到一個(gè),則返回位置,從0開始,如果不止一個(gè),返回第一個(gè),如果沒有,返回flase
 offset不能為負(fù),否則無(wú)法開始查找
strrpos(要超找的字符串,要查找的關(guān)鍵字,從原始字符串的第offset個(gè)字符開始查找)
 從字符串末端開始查找,如果不止一個(gè),返回倒數(shù)第一個(gè)匹配
strripos(要查找的字符串,要查找的關(guān)鍵字,從原始字符串的第offset個(gè)字符開始查找)
 功能同strrpos(),區(qū)別不區(qū)分大小寫
stripos(要查找的字符串,要查找的關(guān)鍵字,從原始字符串的第offset個(gè)字符開始查找)
 功能同strpos()區(qū)別不區(qū)分大小寫
str_replace(被替換的字符串或數(shù)組,替換后的字符串或數(shù)組,源字符串或數(shù)組,被替換的次數(shù))
searchreplacesubject
把subject中的search替換為replace
如果search是數(shù)組,replace是字符串,在replace會(huì)替換search數(shù)組中的所有元素
如果search和replace都是數(shù)組,在replace中的元素會(huì)替換search中對(duì)應(yīng)的元素
如果search數(shù)組中的元素個(gè)數(shù)多余replace,則多余的search數(shù)組中的元素會(huì)被空字符串替換
substr_replace(被操作的原始字符串,用于替換的字符串,要被替換的原始字符串的起始位置,被替換的原始字符串 中字符的個(gè)數(shù))用于在指定位置中查找和替換字符串中特定的子字符串
起始位置:如果為正,從頭開始計(jì)算,如果為負(fù),從尾開始計(jì)算
長(zhǎng)度:如果為正,表示從start開始的連續(xù)length個(gè)字符被替換,
如果為負(fù),表示從start開始到倒數(shù)第length個(gè)字符被替換
str_ireplace()功能同substr_replace(),但是該函數(shù)不區(qū)分大小寫

6、其他常用字符串函數(shù)
strlen(字符串)用于計(jì)算指定字符串的長(zhǎng)度
md5(字符串,標(biāo)志)將一個(gè)字符串進(jìn)行MD5算法加密
第二個(gè)參數(shù)如果為true,將返回一個(gè)16位的二進(jìn)制數(shù);如果為false,則返回一個(gè)32位的十六進(jìn)制字符串,默認(rèn)為false

七、PHP中的面向?qū)ο缶幊碳夹g(shù)
1、對(duì)象的特性
封裝:對(duì)象是封裝的最基本單位,是以對(duì)象名封裝的數(shù)據(jù)結(jié)構(gòu)以及可施加在這些數(shù)據(jù)上的操作的集合。
就像一個(gè)盒子,我們不需要知道盒子里面有什么東西,只需知道它有哪些用途即可。
繼承:PHP不支持多重繼承,繼承本質(zhì)上就是代碼重用,繼承是指子類可以自動(dòng)地?fù)碛懈割惖娜刻匦裕鵁o(wú)須從零開始構(gòu)建。
多態(tài):能夠使用類的上下文來(lái)重新定義或改變類的行為。多態(tài)性使得對(duì)象能夠根據(jù)所得到的參數(shù)決定具體執(zhí)行哪個(gè)行為或方法,而對(duì)外卻可以提供統(tǒng)一的接口。

2、類的結(jié)構(gòu)
class 類名
{
//定義屬性,使用關(guān)鍵字var
 var $var1;
 var $var2;
 ...
 //定義方法,使用關(guān)鍵字function
 function method1(...){...}
 function method2(...){...}
 ...
} 不可以將一個(gè)類分開定義到多個(gè)PHP標(biāo)記對(duì)中,更不可以分開定義到多個(gè)文件中。

3、類的實(shí)例化
使用關(guān)鍵字new來(lái)創(chuàng)建類的實(shí)例
$實(shí)例名=new 類名;

4、使用類的屬性
若要使用類中定義的屬性或方法,只需使用運(yùn)算符"->"即可。如果在類定義時(shí)需要訪問類內(nèi)部自身定義的屬性或方法,則需要使用$this指針。
一般來(lái)說(shuō),從類的外部直接訪問類的屬性存在一定的風(fēng)險(xiǎn),為此PHP對(duì)于訪問類屬性提供了一些保護(hù)措施。__set(),__get(),當(dāng)視圖引用一個(gè)
類中不存在的屬性時(shí),就會(huì)調(diào)用這些方法進(jìn)行相應(yīng)的處理。

5、類的訪問控制 控制類的屬性和方 法
如果對(duì)類的屬性指定了訪問控制類型,則關(guān)鍵字var需省略
public 在類的內(nèi)部和外部都可以訪問。該選項(xiàng)是默認(rèn)選項(xiàng)。
使用“::”運(yùn)算符可以在沒有創(chuàng)建任何類的實(shí)例的情況下訪問類中的函數(shù)或者變量
格式如下:類名::函數(shù)類名::變量
private 只能在類的內(nèi)部進(jìn)行訪問
protected 只能在該類和其子類中使用

6、構(gòu)造函數(shù)
構(gòu)造函數(shù)在一個(gè)類被實(shí)例化時(shí)自動(dòng)調(diào)用。PHP不支持多個(gè)構(gòu)造函數(shù)。
構(gòu)造函數(shù)的語(yǔ)法格式如下:function __construct(參數(shù)1,參數(shù)2,...){}

7、析構(gòu)函數(shù)
析構(gòu)函數(shù)會(huì)在類對(duì)象被銷毀前調(diào)用,通常用來(lái)設(shè)定對(duì)象被銷毀前需要完成的一些操作。銷毀對(duì)象最簡(jiǎn)單的方法是直接對(duì)其賦值NULL
析構(gòu)函數(shù)語(yǔ)法:function __destruct(){}
腳本在執(zhí)行結(jié)束時(shí),PHP會(huì)自動(dòng)銷毀內(nèi)存中的所有對(duì)象。因此,對(duì)于一般的類對(duì)象不需要顯式地定義析構(gòu)函數(shù)。
但是如果類對(duì)象在實(shí)例化時(shí)創(chuàng)建了不太容易銷毀的數(shù)據(jù),如果數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中而不是內(nèi)存中,就應(yīng)當(dāng)定義一個(gè)析構(gòu)函數(shù),在類
對(duì)象銷毀時(shí)使這些數(shù)據(jù)能夠正常被銷毀。

8、靜態(tài)屬性和方法
靜態(tài)屬性和方法需要使用關(guān)鍵字“self::”來(lái)引用,其他介紹前文已有

9、類運(yùn)算符instanceof
可以判斷一個(gè)對(duì)象是否是一個(gè)類的實(shí)例

10、繼承已有的類
繼承使用關(guān)鍵字extend

11、類的重載
重載是指在子類中再次定義與父類相同的屬性和方法。類的重載使得在子類中可以給某個(gè)屬性賦予一個(gè)與其父類中不相同的值,
也可以給某個(gè)方法指定一個(gè)與其父類中不相同的功能。

12、訪問父類中的屬性和方法
一個(gè)子類可以通過(guò)繼承和重載得到父類中的屬性和方法,并能夠重寫所繼承的屬性和方法。但有些時(shí)候,在子類中會(huì)需要直接
調(diào)用父類中的方法。在PHP中可以使用關(guān)鍵字“parent::”來(lái)實(shí)現(xiàn)對(duì)父類中屬性和方法的訪問。

13、使用final關(guān)鍵字禁止繼承和重載
當(dāng)在一個(gè)函數(shù)定義前面使用關(guān)鍵字“final”時(shí),表示該函數(shù)將不能被任何子類重載。
如果不希望讓一個(gè)類繼承,只需在定義類時(shí)為其添加“final”關(guān)鍵字
如果一個(gè)類中的屬性或方法被指定為“private”,則該屬性或方法將不能被繼承
如果一個(gè)類中的屬性或方法被指定為“protected”,則該屬性或方法可以被子類繼承,但不能在類外部直接訪問
如果一個(gè)類中的屬性或方法被指定為“public”,則該屬性或方法不僅可以被子類繼承,而且在任何地方都可以被訪問

14、抽象類和抽象方法
抽象類是不能實(shí)例化的類,只能作為其他類的父類使用。所以繼承抽象類的子類都必須實(shí)現(xiàn)所有的抽象方法。
在PHP中使用關(guān)鍵字“abstract”定義一個(gè)抽象類和方法。

15、接口
接口是一種特殊的抽象類,這種抽象類中通常只包含抽象方法,不定義屬性。屬性的定義和抽象方法的實(shí)現(xiàn)交給實(shí)現(xiàn)接口的類來(lái)完成。
定義接口使用關(guān)鍵字“interface” 實(shí)現(xiàn)接口使用關(guān)鍵字“implements”

16、實(shí)現(xiàn)多個(gè)接口
PHP中的類不允許多重繼承,但允許實(shí)現(xiàn)多個(gè)接口

17、對(duì)象的賦值
目標(biāo)對(duì)象 = clone 原對(duì)象; 復(fù)制后兩個(gè)對(duì)象完全一樣,但互不干擾
在PHP中還可以使用__clone()方法調(diào)整對(duì)象賦值的行為。默認(rèn)情況下,該函數(shù)將建立一個(gè)與原對(duì)象擁有相同屬性和方法的對(duì)象,如果希望
在賦值后改變?cè)瓕?duì)象中的某些內(nèi)容,只需在方法中重寫原對(duì)象中的相應(yīng)的屬性和方法即可。該方法可以使用$this指針

18、自動(dòng)加載類
PHP專門提供了__autoload()函數(shù),來(lái)自動(dòng)加載所需的類。
在需要加載時(shí),該函數(shù)會(huì)自動(dòng)被調(diào)用,同時(shí)類名會(huì)以參數(shù)的形式傳遞給__autoload()函數(shù)

19、處理不存在方法調(diào)用
當(dāng)調(diào)用類中一個(gè)不存在的方法將會(huì)產(chǎn)生致命錯(cuò)誤,PHP提供了__call()方法可以對(duì)這種類型的錯(cuò)誤進(jìn)行處理。

20、對(duì)象的序列化
為了方便變量的傳輸和存儲(chǔ),通常會(huì)在傳輸和存儲(chǔ)變量前將其轉(zhuǎn)化成為字符串的字節(jié)流形式,在需要使用這些變量時(shí),再將其還原為
原來(lái)的變量,這個(gè)過(guò)程成為序列化和反序列化。
為了方便傳輸和存儲(chǔ)類對(duì)象,也可以對(duì)齊進(jìn)行序列化和反序列化處理。PHP中使用函數(shù)serialize()來(lái)序列化一個(gè)對(duì)象,其參數(shù)為對(duì)象名,
返回值為序列化后得到的字符串。反序列化使用unserialize()函數(shù),其參數(shù)為字符串,返回原來(lái)的對(duì)象。
對(duì)象在序列化的時(shí)候,會(huì)自動(dòng)調(diào)用一個(gè)名為__sleep()方法,完成一些睡前的事情,該方法不接收任何參數(shù),但會(huì)返回一個(gè)數(shù)組,數(shù)組中
指定需要序列化的屬性,未被包含的屬性將在序列化時(shí)被忽略。如果沒有指定__sleep()方法,PHP將對(duì)所有的屬性進(jìn)行序列化。
對(duì)象在反序列化時(shí),會(huì)自動(dòng)調(diào)用一個(gè)名為__wakeup()的方法,做一些對(duì)象醒來(lái)就要做的動(dòng)作。

八、PHP訪問MySQL數(shù)據(jù)庫(kù)
1、數(shù)據(jù)庫(kù)操作的基本步驟
鏈接數(shù)據(jù)庫(kù)服務(wù)器mysql_connect(MySQL服務(wù)器主機(jī)名,用戶名,密碼);
選擇一個(gè)數(shù)據(jù)庫(kù)mysql_select_db(數(shù)據(jù)庫(kù)名,資源標(biāo)識(shí));
對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作mysql_query(數(shù)據(jù)庫(kù)語(yǔ)句,資源標(biāo)識(shí));
對(duì)數(shù)據(jù)記錄進(jìn)行處理 mysql_fetch_row(資源標(biāo)識(shí));

2、連接和關(guān)閉數(shù)據(jù)庫(kù)
$connect = mysql_connect("localhost","root","123456");
在結(jié)束對(duì)數(shù)據(jù)庫(kù)的操作之后,mysql_connect()會(huì)自動(dòng)斷開連接,也可以顯式地使用mysql_close()斷開連接。
mysql_pconnect()建立的是一種持久連接,一旦建立連接,連接將被放到連接池中,即使數(shù)據(jù)庫(kù)操作結(jié)束也
不會(huì)自動(dòng)關(guān)閉連接,而是留待以后使用。即使使用mysql_close()函數(shù)也無(wú)法關(guān)閉由函數(shù)mysql_pconnect()建立
的連接。
完成數(shù)據(jù)庫(kù)操作后,應(yīng)當(dāng)關(guān)閉連接。但關(guān)閉不是必需的,因?yàn)镻HP具有垃圾回收功能,會(huì)自動(dòng)對(duì)不用的連接進(jìn)行
處理。當(dāng)然可以顯式地關(guān)閉連接,關(guān)閉連接需要資源標(biāo)識(shí)號(hào),如果沒有指定,則默認(rèn)關(guān)閉最近打開的連接。
mysql_close(資源標(biāo)識(shí)號(hào));

3、選擇數(shù)據(jù)庫(kù)
選擇數(shù)據(jù)庫(kù)mysql_select_db(數(shù)據(jù)庫(kù)名,資源標(biāo)識(shí)號(hào));

4、查詢數(shù)據(jù)庫(kù)
執(zhí)行查詢操作的函數(shù)有mysql_query()和mysql_db_query()。其中函數(shù)mysql_query()直接執(zhí)行一個(gè)SQL語(yǔ)句,
而函數(shù)mysql_db_query()可以在指定數(shù)據(jù)庫(kù)上執(zhí)行SQL語(yǔ)句。
mysql_query(SQL語(yǔ)句,資源標(biāo)識(shí)號(hào)):
 如果SQL語(yǔ)句是select、show、expllain、describe等查詢語(yǔ)句,則執(zhí)行成功時(shí)將返回一個(gè)資源標(biāo)識(shí)號(hào),失敗時(shí)返回false
 如果SQL語(yǔ)句是其他語(yǔ)句(insert、update、delete等),成功時(shí)返回true,失敗時(shí)返回false。
mysql_db_query(數(shù)據(jù)庫(kù)名,SQL語(yǔ)句,資源標(biāo)識(shí)號(hào))功能同上,此句相當(dāng)于mysql|_slect_db()和mysql_query()的組合。

5、獲取和顯示數(shù)據(jù)
mysql_fetch_row(資源標(biāo)識(shí)號(hào))以數(shù)組的形式返回查詢結(jié)果集中的當(dāng)前記錄行,并在調(diào)用后將結(jié)果集中的當(dāng)前行指針下移一行
mysql_fetch_array(資源標(biāo)識(shí)號(hào))以數(shù)組的形式返回查詢結(jié)果集中的當(dāng)前記錄行,并在調(diào)用后將結(jié)果集中的當(dāng)前行下移一行
NOTE:mysql_fetch_row()返回的結(jié)果數(shù)組只能使用數(shù)字下標(biāo)進(jìn)行訪問,mysql_fetch_array()返回結(jié)果數(shù)組可以使用數(shù)組下標(biāo),
也可以使用字段名進(jìn)行訪問,不過(guò)mysql_fetch_row()可以得到最快的執(zhí)行速度
mysql_fetch_assoc(資源標(biāo)識(shí)號(hào))以關(guān)聯(lián)數(shù)組的形式返回查詢結(jié)果集中的當(dāng)前記錄行,并在調(diào)用后將結(jié)果集中的當(dāng)前行指針下移一行
mysql_fetch_object(資源標(biāo)識(shí)號(hào))以對(duì)象的形式返回查詢結(jié)果集中的當(dāng)前記錄行,并在嗲用后將結(jié)果集中的當(dāng)前行指針下移一行
mysql_result(資源標(biāo)識(shí)號(hào),行號(hào),字段)字段可以使用數(shù)字索引,也可以使用字段名。數(shù)字索引下標(biāo)從0開始
該函數(shù)返回指定記錄行的指定字段的值
mysql_num_rows(資源標(biāo)識(shí)號(hào))返回符合查詢條件的記錄行數(shù)
mysql_field_seek(資源標(biāo)識(shí)號(hào),定位的行號(hào))定位到要查詢的行
mysql_fetch_length(資源標(biāo)識(shí)號(hào))以數(shù)字索引數(shù)組的形式返回,且每個(gè)數(shù)組元素值對(duì)應(yīng)一個(gè)字段的字節(jié)數(shù)

6、數(shù)據(jù)的增刪改及相關(guān)操作
使用mysql_query()完成數(shù)據(jù)的增刪改操作
int mysql_affected_rows(資源標(biāo)識(shí)號(hào))返回受insert、update和delete影響的記錄數(shù)
mysql_num_rows()僅對(duì)select語(yǔ)句有效

感謝各位的閱讀!關(guān)于“PHP知識(shí)點(diǎn)有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI