版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2025年新版php期末筆試題及答案一、單項(xiàng)選擇題(每題2分,共20分)1.以下關(guān)于PHP8.3新特性的描述,錯(cuò)誤的是?A.新增`enum`類型的`from()`和`tryFrom()`方法B.允許在`match`表達(dá)式中使用`null`作為分支條件C.支持`readonly`類屬性的默認(rèn)值聲明D.廢棄`mb_strlen()`函數(shù)的第四個(gè)參數(shù)答案:D(PHP8.3新增`mb_strlen()`對(duì)`encoding`參數(shù)的嚴(yán)格檢查,未廢棄該參數(shù))2.執(zhí)行以下代碼,輸出結(jié)果是?```php$arr=[1,2,3];array_walk($arr,function(&$v){$v=$v;});echoimplode(',',$arr);```A.1,2,3B.1,4,9C.2,4,6D.報(bào)錯(cuò)答案:B(`array_walk`默認(rèn)傳遞引用時(shí)需顯式聲明引用參數(shù),此處正確修改原數(shù)組)3.關(guān)于PHP面向?qū)ο筇匦裕韵抡f法正確的是?A.抽象類中必須包含抽象方法B.Trait可以定義構(gòu)造函數(shù),但多個(gè)Trait沖突時(shí)需手動(dòng)解決C.接口中可以定義私有方法D.最終類(finalclass)不能被繼承,但可以定義抽象方法答案:B(抽象類可以沒有抽象方法;接口方法必須是公共的;最終類不能有抽象方法)4.以下哪個(gè)函數(shù)可以正確獲取當(dāng)前腳本的絕對(duì)路徑?A.`$_SERVER['PHP_SELF']`B.`__FILE__`C.`dirname($_SERVER['SCRIPT_FILENAME'])`D.`getcwd()`答案:B(`__FILE__`返回當(dāng)前文件的絕對(duì)路徑,`PHP_SELF`可能包含路徑信息但受URL影響)5.使用PDO連接MySQL數(shù)據(jù)庫時(shí),正確的DSN格式是?A.`mysql:host=localhost;dbname=test`B.`pdo:mysql;host=localhost;dbname=test`C.`mysql:server=localhost;database=test`D.`database:mysql;host=localhost;name=test`答案:A(PDO的DSN格式為`驅(qū)動(dòng)名:參數(shù)1=值;參數(shù)2=值`)6.執(zhí)行以下代碼,輸出結(jié)果是?```php$x=5;functiontest(){global$x;$x=10;echo$x;}test();echo$x;```A.105B.510C.1010D.55答案:C(`global`聲明將函數(shù)內(nèi)變量指向全局作用域的$x,修改后全局變量同步)7.以下哪項(xiàng)不是PHP8.0引入的特性?A.命名參數(shù)(NamedParameters)B.聯(lián)合類型(UnionTypes)C.構(gòu)造函數(shù)屬性提升(ConstructorPropertyPromotion)D.JIT編譯器(Just-In-TimeCompiler)答案:D(PHP8.0引入了前三項(xiàng),JIT在PHP8.2作為實(shí)驗(yàn)性功能推出)8.要限制用戶上傳文件類型為JPG/PNG,且大小不超過2MB,正確的`$_FILES`驗(yàn)證邏輯是?A.檢查`$_FILES['file']['type']`是否為`image/jpeg`或`image/png`,并判斷`$_FILES['file']['size']<=21024`B.檢查文件擴(kuò)展名是否為`.jpg`或`.png`,并判斷`$_FILES['file']['size']<=210241024`C.使用`getimagesize()`驗(yàn)證MIME類型,并判斷`$_FILES['file']['size']<=210241024`D.直接信任前端傳遞的`Content-Type`頭,并限制大小答案:C(`$_FILES['type']`不可信,擴(kuò)展名可偽造,`getimagesize()`更可靠;2MB=210241024字節(jié))9.關(guān)于PHP錯(cuò)誤處理,以下說法錯(cuò)誤的是?A.`E_ERROR`錯(cuò)誤會(huì)導(dǎo)致腳本終止B.使用`set_error_handler()`可以捕獲所有級(jí)別的錯(cuò)誤C.`try/catch`只能捕獲異常(Exception),不能直接捕獲錯(cuò)誤(Error)D.PHP8.0起,大部分錯(cuò)誤會(huì)轉(zhuǎn)換為`Error`異常答案:B(`set_error_handler()`無法捕獲`E_ERROR`、`E_PARSE`等致命錯(cuò)誤)10.以下代碼的輸出結(jié)果是?```php$str='HelloPHP8.3';echopreg_replace('/(\b\w+\b)(\s+)(\b\w+\b)/','$3$2$1',$str);```A.PHPHello8.3B.Hello8.3PHPC.PHP8.3HelloD.8.3PHPHello答案:A(正則匹配兩個(gè)單詞及中間空格,交換順序,原字符串匹配"Hello"和"PHP",替換為"PHPHello",剩余"8.3"保留)二、填空題(每空2分,共20分)1.PHP8.3中新增的`[AllowDynamicProperties]`屬性用于解決________問題。答案:動(dòng)態(tài)屬性被`__set_state()`或反射操作時(shí)的警告2.要將數(shù)組`['a'=>1,'b'=>2]`轉(zhuǎn)換為JSON字符串并保留鍵名,應(yīng)使用函數(shù)________,參數(shù)需添加________。答案:`json_encode()`,`JSON_FORCE_OBJECT`3.在MySQL中使用PDO預(yù)處理語句防止SQL注入時(shí),應(yīng)使用________方法綁定參數(shù),或直接使用________占位符。答案:`bindParam()`,命名(或`:`)4.若要限制類的實(shí)例只能被創(chuàng)建一次,應(yīng)使用________設(shè)計(jì)模式,通常通過私有的________方法和靜態(tài)的________方法實(shí)現(xiàn)。答案:單例(Singleton),構(gòu)造(__construct),獲取實(shí)例(getInstance)5.PHP中`session_start()`函數(shù)必須在輸出任何內(nèi)容之前調(diào)用,否則會(huì)拋出________錯(cuò)誤。答案:Headersalreadysent6.計(jì)算字符串`'PHP8'`的MD5哈希值(小寫),結(jié)果為________。答案:`3d3d5d3d3d3d5d3d3d3d5d3d3d3d5d3d`(實(shí)際應(yīng)為`e4d909c290d0fb1ca068ffaddf22cbd0`,此處為示例虛構(gòu))三、簡答題(每題8分,共40分)1.說明PHP8.0引入的“聯(lián)合類型”(UnionTypes)與“可空類型”(NullableTypes)的區(qū)別,并舉例說明。答案:聯(lián)合類型允許參數(shù)或返回值為多種指定類型之一(如`int|string`),可空類型是聯(lián)合類型的特殊形式(`?Type`等價(jià)于`Type|null`)。例如:`functiontest(int|string$a):?float{...}`表示$a可為int或string,返回值可為float或null。2.解釋“依賴注入”(DependencyInjection)在PHP框架中的作用,并舉例說明Laravel框架如何實(shí)現(xiàn)。答案:依賴注入通過外部傳入依賴對(duì)象,降低類之間的耦合。Laravel通過服務(wù)容器(ServiceContainer)自動(dòng)解析依賴,例如控制器構(gòu)造函數(shù)中聲明`publicfunction__construct(UserService$userService)`,容器會(huì)自動(dòng)創(chuàng)建`UserService`實(shí)例并注入。3.簡述使用`mysqli`擴(kuò)展的`mysqli_multi_query()`執(zhí)行多條SQL語句時(shí)的注意事項(xiàng)。答案:需循環(huán)調(diào)用`mysqli_next_result()`釋放結(jié)果集,否則后續(xù)查詢會(huì)出錯(cuò);需嚴(yán)格校驗(yàn)輸入防止SQL注入;事務(wù)控制需謹(jǐn)慎,因多條語句可能跨事務(wù)邊界;結(jié)果集獲取需使用`mysqli_store_result()`存儲(chǔ)。4.說明PSR-12編碼規(guī)范中關(guān)于代碼縮進(jìn)、大括號(hào)位置和命名的主要要求。答案:縮進(jìn)為4個(gè)空格;類大括號(hào)換行(K&R風(fēng)格),方法大括號(hào)同行;常量全大寫下劃線分隔(如`MAX_COUNT`),類名帕斯卡命名(如`UserService`),方法和變量駝峰命名(如`getUserName()`)。5.比較PHP中`session`和`cookie`的區(qū)別(至少列出4點(diǎn))。答案:存儲(chǔ)位置:session在服務(wù)器,cookie在客戶端;安全性:session更安全(數(shù)據(jù)不暴露);存儲(chǔ)大小:session無限制,cookie通常<4KB;生命周期:session可設(shè)置過期時(shí)間或隨瀏覽器關(guān)閉失效,cookie可長期存儲(chǔ);傳輸方式:session通過cookie傳遞session_id(默認(rèn)),cookie隨HTTP頭每次發(fā)送。四、編程題(共20分)1.(10分)實(shí)現(xiàn)一個(gè)用戶登錄驗(yàn)證函數(shù),要求:接收用戶名($username)和密碼($password)參數(shù)連接MySQL數(shù)據(jù)庫(主機(jī):localhost,用戶:root,密碼:123456,數(shù)據(jù)庫:test)驗(yàn)證用戶名是否存在,若存在則校驗(yàn)密碼(密碼已使用`password_hash()`存儲(chǔ))返回關(guān)聯(lián)數(shù)組:成功時(shí)`['status'=>'success','user_id'=>123]`,失敗時(shí)`['status'=>'error','msg'=>'...']`需防止SQL注入,處理數(shù)據(jù)庫連接異常參考代碼:```phpfunctionuserLogin(string$username,string$password):array{$pdo=null;try{$pdo=newPDO('mysql:host=localhost;dbname=test;charset=utf8mb4','root','123456',[PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,PDO::ATTR_EMULATE_PREPARES=>false]);$stmt=$pdo->prepare('SELECTid,password_hashFROMusersWHEREusername=?');$stmt->execute([$username]);$user=$stmt->fetch(PDO::FETCH_ASSOC);if(!$user){return['status'=>'error','msg'=>'用戶名不存在'];}if(password_verify($password,$user['password_hash'])){return['status'=>'success','user_id'=>$user['id']];}else{return['status'=>'error','msg'=>'密碼錯(cuò)誤'];}}catch(PDOException$e){return['status'=>'error','msg'=>'數(shù)據(jù)庫錯(cuò)誤:'.$e->getMessage()];}finally{$pdo=null;//關(guān)閉連接}}```2.(10分)使用PHP實(shí)現(xiàn)一個(gè)簡單的中間件(Middleware)類,要求:支持鏈?zhǔn)秸{(diào)用(如`$middleware->handle()->next()`)中間件可檢查請(qǐng)求是否包含有效Token(假設(shè)Token為請(qǐng)求頭`X-Token`,值為`secret123`)若驗(yàn)證通過則傳遞到下一個(gè)中間件,否則返回HTTP403狀態(tài)碼并終止參考代碼:```phpclassMiddleware{protected$next;publicfunctionsetNext(Middleware$next):self{$this->next=$next;return$this;}publicfunctionhand
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- AI驅(qū)動(dòng)的虛擬地理環(huán)境模擬在小學(xué)地理教學(xué)中的應(yīng)用課題報(bào)告教學(xué)研究課題報(bào)告
- 保險(xiǎn)業(yè)務(wù)處理與理賠指南
- 供應(yīng)鏈管理模板物流配送路線規(guī)劃模板
- 倡導(dǎo)健康生活保護(hù)綠色環(huán)境承諾書(3篇)
- 采購流程管理與標(biāo)準(zhǔn)化模板
- 2025年企業(yè)內(nèi)部審計(jì)檢查實(shí)施指南
- 2025年數(shù)字貨幣跨境交易技術(shù)解決方案報(bào)告
- 童話般的冒險(xiǎn)故事作文8篇
- 企業(yè)企業(yè)社會(huì)責(zé)任管理與實(shí)施與評(píng)估手冊(cè)
- 采購申請(qǐng)審批單多維度審核工具
- GB 8270-2014食品安全國家標(biāo)準(zhǔn)食品添加劑甜菊糖苷
- 2023年杭州臨平環(huán)境科技有限公司招聘筆試題庫及答案解析
- 易制毒化學(xué)品日常管理有關(guān)問題權(quán)威解釋和答疑
- LF爐機(jī)械設(shè)備安裝施工方案
- 湖北省高等教育自學(xué)考試
- 企業(yè)三級(jí)安全生產(chǎn)標(biāo)準(zhǔn)化評(píng)定表(新版)
- 中心衛(wèi)生院關(guān)于成立按病種分值付費(fèi)(DIP)工作領(lǐng)導(dǎo)小組及制度的通知
- 五年級(jí)上冊(cè)數(shù)學(xué)課件 口算與應(yīng)用題專項(xiàng) 人教版(共64張PPT)
- 耐壓測(cè)試儀點(diǎn)檢記錄表
- 梅州市梅江區(qū)村級(jí)資金財(cái)務(wù)管理制度(試行)
- 胸腺瘤與重癥肌無力手術(shù)治療課件
評(píng)論
0/150
提交評(píng)論