国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁(yè) > 營(yíng)銷(xiāo)資訊 > 網(wǎng)站運(yùn)營(yíng) > 小白7天入門(mén)PHP Web開(kāi)發(fā) - Day 4 后端PHP入門(mén)

小白7天入門(mén)PHP Web開(kāi)發(fā) - Day 4 后端PHP入門(mén)

時(shí)間:2023-05-27 03:09:01 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)

時(shí)間:2023-05-27 03:09:01 來(lái)源:網(wǎng)站運(yùn)營(yíng)

小白7天入門(mén)PHP Web開(kāi)發(fā) - Day 4 后端PHP入門(mén):
《小白7天入門(mén)PHP Web開(kāi)發(fā)》系列文章,面向單純善良的完全不懂Web開(kāi)發(fā)編程的入門(mén)速成課程,小白們?nèi)绻信d趣可以研讀此系列文章,也可以連線提問(wèn)。各路大神有何指教還請(qǐng)指點(diǎn)一二。希望各路大神手下留情,注意維護(hù)自己的身份和形象。拜謝各位。
上一篇文章 我們學(xué)會(huì)了使用簡(jiǎn)單的CSS完成了對(duì)HTML頁(yè)面的修飾和美化布局,以及以表單提交驗(yàn)證為例的JS的基本使用,這節(jié)我們開(kāi)始嘗試使用PHP來(lái)做后端處理表單提交后的相關(guān)操作。

一、關(guān)于PHP的概念

對(duì)于PHP的基礎(chǔ)概念,作為小白入門(mén)的我們,只需要記住一句話就可以了,那就是

PHP全稱為 PHP: Hypertext Preprocessor(更名前是 Personal Home Page ),中文名字叫超文本預(yù)處理器,是一種開(kāi)源腳本編程語(yǔ)言,是常用的web開(kāi)發(fā)語(yǔ)言(從舊名稱就可以看出)。
這里我們需要了解一個(gè)概念:靜態(tài)網(wǎng)站和動(dòng)態(tài)網(wǎng)站。

1、靜態(tài)、動(dòng)態(tài)所描述的是頁(yè)面是否能動(dòng)嗎?

當(dāng)然不是的!拿我們前面幾天的文章寫(xiě)成的HTML網(wǎng)頁(yè)頁(yè)面來(lái)說(shuō),她有動(dòng)(交互)的東西嗎?有,不記得了嗎?我們用JS做了表單驗(yàn)證,以及表單提交也有交互的過(guò)程,但這些都不代表網(wǎng)頁(yè)是動(dòng)態(tài)網(wǎng)頁(yè),包括動(dòng)圖、視頻播放等網(wǎng)頁(yè)上能動(dòng)的東西,都不能代表網(wǎng)頁(yè)是動(dòng)態(tài)的。動(dòng)靜態(tài)網(wǎng)頁(yè)所描述的是:內(nèi)容。網(wǎng)頁(yè)內(nèi)容是否根據(jù)不同用戶或不同場(chǎng)景有所不同,無(wú),則靜,有則,動(dòng)。

舉個(gè)例子~!

我們前面寫(xiě)得HTML網(wǎng)頁(yè)頁(yè)面,無(wú)論誰(shuí)打開(kāi)什么時(shí)候打開(kāi),頁(yè)面和內(nèi)容那都是一樣的,也就是“死”的,一旦生成,就像我愛(ài)你一樣一輩子都不會(huì)變,這就是靜態(tài)。

我們不同的人登錄到我大本站,登錄的賬號(hào)顯示的昵稱名字和推薦的內(nèi)容題目,那都是千篇不一律,不一樣的,根據(jù)不同用戶或不同場(chǎng)景渲染的頁(yè)面內(nèi)容不一樣,總之就是變動(dòng)的,這就是動(dòng)態(tài)。

2、PHP就是幫助實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)站的非常好的選擇

PHP作為最好的WEB編程語(yǔ)言之一(謙虛點(diǎn),低調(diào)點(diǎn)),有很多顯而易見(jiàn)的特點(diǎn),比如語(yǔ)法簡(jiǎn)單易學(xué)習(xí)、開(kāi)發(fā)效率高、非常適合WEB開(kāi)發(fā)、社會(huì)人才需求大等。PHP可以輕松實(shí)現(xiàn)我們 上一篇文章 的表單提交和交互。

了解以上內(nèi)容,記住更佳,接下來(lái)我們開(kāi)始先了解一下PHP的語(yǔ)法和代碼結(jié)構(gòu)。

二、PHP的基礎(chǔ)語(yǔ)法

1、基本寫(xiě)法

<?php/* * PHP代碼通常被包含在這個(gè)標(biāo)簽中 * 開(kāi)始標(biāo)簽是 <?php * 結(jié)束標(biāo)簽是 ?> * 如果文件中只有PHP代碼,沒(méi)有任何別的東西,結(jié)束標(biāo)簽可以不要,這種情況下也建議 * 不要(避免頁(yè)面輸出一些空串影響頁(yè)面) */// PHP 代碼寫(xiě)在這里,如下面 echo "Hello PHP, hello web"; // 在頁(yè)面上輸出字符串 Hello PHP, hello web?>2、運(yùn)行環(huán)境

PHP的運(yùn)行需要有自己的運(yùn)行環(huán)境,瀏覽器直接打開(kāi)文件是不行滴,瀏覽器直接打開(kāi)的都是靜態(tài)資源。所以我們先搞個(gè)簡(jiǎn)單的運(yùn)行環(huán)境。

因?yàn)槲覀兪侨腴T(mén),不是小白就是新手,建議開(kāi)發(fā)環(huán)境(就是你自己在你電腦上搗鼓寫(xiě)代碼運(yùn)行測(cè)試等等的地方)直接使用集成(把PHP和服務(wù)器相關(guān)的都合在一起)的開(kāi)發(fā)環(huán)境軟件,本文推薦使用 phpStudy,可以去官網(wǎng)下載一個(gè)最新版,在windows上直接打開(kāi)安裝即可。

phpStudy V8.0下載(Win64位) - 官方最新版本(不斷更新)-php中文網(wǎng)工具下載

phpStudy V8.0下載(Win32位) - 官方最新版本-php中文網(wǎng)工具下載

根據(jù)你系統(tǒng)的位數(shù)選擇對(duì)應(yīng)的版本下載根據(jù)他們的文檔說(shuō)明進(jìn)行安裝即可。他們都有教程的,注意看哈,有問(wèn)題再留言問(wèn)我。(我們目前到這節(jié)課,只需要安裝好php和nginx服務(wù)器即可)

安裝就緒后,運(yùn)行軟件,我們就可以看到“網(wǎng)站”欄里面有一個(gè)默認(rèn)的網(wǎng)站域名,localhost ,我們點(diǎn)擊“管理”,“打開(kāi)根目錄”文件夾,在文件夾里新建一個(gè)文件(可以新建文本文檔,再修改文件名)hello.php,打開(kāi)編輯這個(gè)文件,把上述代碼復(fù)制或者手敲進(jìn)去(建議手敲一遍代碼)。

這里再推薦一個(gè)輕量級(jí),啟動(dòng)塊使用方便的適合新手也適合老手的編輯器,個(gè)人比較喜歡用,我們暫時(shí)也不用深究工具選擇,等你學(xué)習(xí)到一定程度了,自然而然就會(huì)主動(dòng)了解和選擇了。那么這個(gè)編輯器就是 sublime text 3 點(diǎn)擊就可以下載 了,當(dāng)然你直接用我們之前提到的前端神器VSCode也是可以的。

如果你安裝了sbt(sublime text的簡(jiǎn)稱),可以直接用編輯器新建文件,保存到對(duì)應(yīng)的根目錄即可。

文件代碼寫(xiě)好保存好放到對(duì)應(yīng)位置,phpStudy也啟動(dòng)了,phpStudy里面的nginx也啟動(dòng)了,那么,現(xiàn)在,打開(kāi)瀏覽器,在瀏覽器輸入 localhost/hello.php,即可訪問(wèn)到。結(jié)果如下圖:

圖 2-1 瀏覽器運(yùn)行效果圖
至此,我們了解了PHP文件的基本編寫(xiě)和運(yùn)行過(guò)程:

編寫(xiě)php代碼 =》 運(yùn)行php服務(wù)器環(huán)境(如phpStudy中的nginx和php7.0) =》瀏覽器訪問(wèn)php文件(事實(shí)上我們還可以通過(guò)命令行,用php命令執(zhí)行php文件,知道就可以了)

3、php的基本語(yǔ)法

語(yǔ)法就像我們學(xué)語(yǔ)文里面的段落、句子、詞語(yǔ)一樣,有一定的規(guī)律和結(jié)構(gòu)。關(guān)鍵字(詞語(yǔ))組成語(yǔ)句(句子),語(yǔ)句組成代碼段落和結(jié)構(gòu)(段落)。

我們以 “用戶輸入學(xué)生成績(jī),根據(jù)學(xué)生成績(jī)對(duì)學(xué)生評(píng)級(jí)并輸出”為案例講解php的語(yǔ)法。

首先,是HTML頁(yè)面,一個(gè)包含簡(jiǎn)單表單的頁(yè)面,方便用戶輸入學(xué)生成績(jī)并提交到后端服務(wù)器的php代碼進(jìn)行處理。(這個(gè)頁(yè)面可以先嘗試自己實(shí)現(xiàn)以下,效果如下即可)

圖 2-2 表單頁(yè)面效果
記得要自己盡可能的去編寫(xiě)HTML代碼去實(shí)現(xiàn)上面的頁(yè)面哦,這個(gè)頁(yè)面很簡(jiǎn)單,只要你認(rèn)真看了前面的內(nèi)容,就真的so easy~!

當(dāng)然,我還是會(huì)給代碼給你參考的,但不代表我的是唯一答案,你知道的,穿衣服的方式有很多種。

<!-- score.html --><!-- 使用 localhost/score.html 訪問(wèn)或直接用瀏覽器打開(kāi)文件 --><!-- score.html文件應(yīng)與后續(xù).php文件在同一個(gè)目錄下 --><!DOCTYPE html><html><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>成績(jī)轉(zhuǎn)評(píng)級(jí)</title> <style type="text/css"> /*通用樣式*/ * { font-size: 14px; margin: 0; padding: 0; } /*說(shuō)明部分樣式*/ .explain { background-color: #f4f4f4; margin-top: 100px; padding: 20px 0px; } .block { text-align: left; width: 400px; margin: 0 auto; } .block ul { list-style: none; } /*表單部分樣式*/ .form { width: 400px; margin: 0 auto; margin-top: 20px; } .form input, .form button { height: 36px; box-sizing: border-box; margin-top: 10px; padding: 5px 10px; } .form input { width: 100%; } .form button { width: 100px; } </style></head><body> <div class="explain"> <div class="block"> <ul> <li>1、 學(xué)生成績(jī)90分(含)以上,評(píng)級(jí)為A</li> <li>2、 學(xué)生成績(jī)?cè)?0分(含)以上,90分以下,評(píng)級(jí)為B</li> <li>3、 學(xué)生成績(jī)?cè)?0分(含)以上,80分以下,評(píng)級(jí)為C</li> <li>4、 學(xué)生成績(jī)?cè)?0分以下,評(píng)級(jí)為D</li> </ul> </div> </div> <div class="form"> <form action="scorelevel.php" method="get" accept-charset="utf-8" target="_blank" onsubmit="return checkform()"> <input type="text" name="study_name" value="" placeholder="請(qǐng)輸入學(xué)生姓名"> <input type="text" name="study_score" value="" placeholder="請(qǐng)輸入學(xué)生成績(jī)"> <br> <button type="submit">檢測(cè)評(píng)級(jí)</button> </form> </div> <script> function checkform() { var study_name = document.getElementsByName('study_name')[0].value; var study_score = document.getElementsByName('study_score')[0].value; if ( !(study_name && study_score) ) { alert('學(xué)生姓名和學(xué)生成績(jī)不能為空'); return false; } } </script></body></html>這個(gè)HTML文件叫 score.html,里面主要是一個(gè)表單與后端php文件交互,所以我們要新建一個(gè)在action屬性里面的那個(gè)名字的php文件

<form action="scorelevel.php" method="get" accept-charset="utf-8" _blank="self">用sbt新建 scorelevel.php,注意這里建議 保持score.html和scorelevel.php同在根目錄下(action里面其實(shí)就是php文件的地址,所以你能保證路徑對(duì)就可以),以下是php文件的代碼,你大可以先復(fù)制進(jìn)去我們?cè)賮?lái)逐個(gè)了解。

<?php/** * 我們以 “用戶輸入學(xué)生成績(jī),根據(jù)學(xué)生成績(jī)對(duì)學(xué)生評(píng)級(jí)并輸出” 的功能需求來(lái)做示例 * 需求的基本內(nèi)容: * 學(xué)生成績(jī)90分(含)以上,評(píng)級(jí)為A * 學(xué)生成績(jī)?cè)?0分(含)以上,90分以下,評(píng)級(jí)為B * 學(xué)生成績(jī)?cè)?0分(含)以上,80分以下,評(píng)級(jí)為C * 學(xué)生成績(jī)?cè)?0分以下,評(píng)級(jí)為D */// 首先考慮,成績(jī)從哪里來(lái)?用戶輸入提交過(guò)來(lái)的# 獲取用戶提交的學(xué)生名字和成績(jī)$study_name = isset($_GET['study_name']) ? $_GET['study_name'] : '';$study_score = isset($_GET['study_score']) ? $_GET['study_score'] : '';// 初始化評(píng)級(jí)$level = '未知';$level_label = '未知';// 檢測(cè)姓名和分?jǐn)?shù)是否為空if ( $study_name == '' || $study_score == '' ) { echo '學(xué)生姓名和學(xué)生成績(jī)未知,請(qǐng)檢查提交的數(shù)據(jù)是否為空'; die;}// 根據(jù)分?jǐn)?shù)給學(xué)生評(píng)級(jí)if ( $study_score >= 90 ) { $level = 'A';} elseif ( $study_score >= 80 && $study_score < 90 ) { $level = 'B';} elseif ( $study_score >= 60 && $study_score < 80 ) { $level = 'C';} elseif ( $study_score < 60 ) { $level = 'D';} else { $level = '未知';}switch ( $level ) { case 'A': $level_label = '優(yōu)秀'; break; case 'B': $level_label = '良好'; break; case 'C': $level_label = '及格'; break; case 'D': $level_label = '差'; break;}echo '學(xué)生 '.$study_name.' 的成績(jī)?yōu)?'. $study_score .',評(píng)級(jí)為:'.$level.'('. $level_label .')';die;現(xiàn)在你在HTML頁(yè)面上輸入姓名和成績(jī),點(diǎn)擊按鈕“檢測(cè)評(píng)級(jí)”,會(huì)打開(kāi)一個(gè)新的頁(yè)面,這個(gè)頁(yè)面就是php文件的頁(yè)面,但是他是處理過(guò)我們提交的數(shù)據(jù)最后輸出內(nèi)容到頁(yè)面上來(lái)的。

圖 2-3 表單提交到scroelevel.php后的頁(yè)面效果
3.1 php文件代碼標(biāo)簽語(yǔ)法:第一點(diǎn),當(dāng)然我們寫(xiě)php代碼的時(shí)候,要有一定的基礎(chǔ)規(guī)范,正常情況下,php代碼應(yīng)該在“<?php // php代碼 ?>”標(biāo)簽內(nèi),當(dāng)整個(gè)文件只有php代碼時(shí),結(jié)束標(biāo)簽“?>”是可以并且建議忽略不寫(xiě)的,反過(guò)來(lái)說(shuō)標(biāo)簽內(nèi)只能是php代碼,每一條php語(yǔ)句必須以半角英文分號(hào)(;)結(jié)束。然而需要注意的一點(diǎn)是,php代碼在處理字符串的時(shí)候,是可以把HTML、CSS、JS代碼寫(xiě)進(jìn)去的。(字符串是指任意一串字符、代碼、文本等,在php代碼中表現(xiàn)為在單引號(hào)雙引號(hào)里面的都是字符串,如上述代碼中我們最后 echo后面的內(nèi)容)

3.2 變量:第二點(diǎn),前端HTML頁(yè)面表單提交過(guò)來(lái)的數(shù)據(jù),我們要接收,就需要變量這個(gè)東西了,變量是儲(chǔ)存計(jì)算結(jié)果或能表示值的抽象概念,簡(jiǎn)單理解就是用來(lái)表示某個(gè)值或者某個(gè)數(shù)據(jù)的一個(gè)概念。變量通過(guò)聲明或定義變量名,由代碼去向計(jì)算機(jī)申請(qǐng)內(nèi)存,來(lái)存儲(chǔ)變量名所對(duì)應(yīng)的值或數(shù)據(jù),變量名由 英文開(kāi)頭(必須),和數(shù)字、下劃線共同組成,你可以自己選擇(一般命名有兩種方式,一種就是代碼里用的,用下劃線將不同含義的詞分開(kāi),還有一種是第二個(gè)單詞起首字母大寫(xiě),叫駝峰法,如$studyName)。比如代碼中的

// 獲取用戶提交的學(xué)生名字和成績(jī)$study_name = isset($_GET['study_name']) ? $_GET['study_name'] : '';$study_score = isset($_GET['study_score']) ? $_GET['study_score'] : '';// 初始化評(píng)級(jí)$level = '未知';php中聲明和定義變量使用 $ 美元符號(hào),后面緊跟著變量名稱,例如上面的 $study_name,$ 是php中聲明和定義變量的語(yǔ)法study_name 是變量名,代碼通過(guò)變量名和計(jì)算機(jī)內(nèi)存地址相對(duì)應(yīng)進(jìn)行存儲(chǔ)和獲取變量值。同時(shí)變量有不同類型(描述的變量值的類型),比如常見(jiàn)的:

字符類型:可以理解為字符或字符串,如 $var = 'string';整型:可以理解為整數(shù),包括正負(fù)數(shù)和0,都是整型,如 $var = 1; $var = -2;浮點(diǎn)型:可以理解為有小數(shù)的數(shù)字類型,如 $var = 1.12;布爾類型:可以理解為只有真、假兩個(gè)值,如 $var = true; $var = false;數(shù)組:是一種數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)多個(gè)不同的值,如 $var = array('我是值1', '我是值2', 5);對(duì)象:是一種數(shù)據(jù)結(jié)構(gòu),是類的實(shí)例,對(duì)象存儲(chǔ)了很多值,包括屬性變量、方法等(后面我們會(huì)專門(mén)講面向?qū)ο蟮臅r(shí)候講到對(duì)象)3.3 比較運(yùn)算和數(shù)學(xué)運(yùn)算:第三點(diǎn),因?yàn)槲覀冃枰ㄟ^(guò)不同的分?jǐn)?shù)不同的條件來(lái)?yè)Q算出評(píng)級(jí),所以要進(jìn)行判斷和比較,比較運(yùn)算,顧名思義,就是要對(duì)多個(gè)值或變量進(jìn)行比較,必出大小、是否相等、是否不相等等,比較運(yùn)算的結(jié)果是布爾值,如

$study_name == '' || $study_score == ''其中符號(hào) || 是或者的意思,只要滿足其中任何一個(gè)條件就可以繼續(xù),符號(hào)在回車(chē)鍵上方,這個(gè)語(yǔ)句的意思就是:如果變量$study_name為空字符串或變量$study_score為空字符串的話就是真的;如果要兩個(gè)或多個(gè)條件同時(shí)滿足時(shí)用 && 符號(hào)連接。

第四點(diǎn),當(dāng)我們需要做一些數(shù)學(xué)運(yùn)算的時(shí)候就用到php的數(shù)學(xué)運(yùn)算,其實(shí)就跟我們現(xiàn)實(shí)中的數(shù)學(xué)運(yùn)算如出一轍,加、減、乘、除、取余、取模等是常見(jiàn)的數(shù)學(xué)運(yùn)算,其他一些稍復(fù)雜的數(shù)學(xué)運(yùn)算,php也提供了相關(guān)的內(nèi)置函數(shù)(php自己封裝了一些列標(biāo)準(zhǔn)的函數(shù),函數(shù)是代碼的一種封裝方式,先有個(gè)概念在心中即可)來(lái)處理。

加法運(yùn)算:$a = 1 + 1; // 結(jié)果是 $a = 2減法運(yùn)算:$b = $a - 1; // 結(jié)果是 $b = 1乘法運(yùn)算:$c = $a * $b; // 結(jié)果是 $c = 2除法運(yùn)算:$d = 5 / $c; // 結(jié)果是 $d = 2.5取余/取模:$e = 5 % $c; // 結(jié)果是 $e = 1,就是余數(shù),如果除數(shù)是負(fù)數(shù),余數(shù)也是負(fù)數(shù)3.4 分支語(yǔ)法,條件判斷 if...elseif...else...

第五點(diǎn),當(dāng)我們做不同的比較得到不同的結(jié)論后,會(huì)有不同的評(píng)級(jí)處理,這就好比是在岔路口有不同的岔路,我們要對(duì)其分支進(jìn)行一個(gè)選擇(這個(gè)選擇基于比較結(jié)果),于是我們就需要以下的php語(yǔ)法的代碼分支結(jié)構(gòu)來(lái)實(shí)現(xiàn)

if ( $study_score >= 90 ) { $level = 'A';} elseif ( $study_score >= 80 && $study_score < 90 ) { $level = 'B';} elseif ( $study_score >= 60 && $study_score < 80 ) { $level = 'C';} elseif ( $study_score < 60 ) { $level = 'D';} else { $level = '未知';}if...elseif...else...主要用于處理不同條件下,處理的方式或者變量的值不一樣的情況,就像找女朋友一樣,列了一堆條件,挨個(gè)去篩選,直到符合條件時(shí)就交往,不符合繼續(xù)找。主要結(jié)構(gòu)如上。條件明確時(shí),使用if或elseif+圓括號(hào),括號(hào)里面是條件,即比較運(yùn)算,當(dāng)結(jié)果是真(true)時(shí)就執(zhí)行對(duì)應(yīng)花括號(hào)里面的代碼。比如

if ( 女孩身高 > 170 ) { echo "我要和她交往";} else { echo "孤獨(dú)終老";}如果女孩的身高大于170cm,那就交往,否則拒絕交往(你可能要孤獨(dú)終老了)。當(dāng)只有一個(gè)明確條件,其他都不清楚的時(shí)候,中間是可以沒(méi)有elseif的,直接if...else...即可。

3.5 分支語(yǔ)法,switch

第六點(diǎn),其實(shí)跟第五點(diǎn)差不多

switch ( $level ) { case 'A': $level_label = '優(yōu)秀'; break; case 'B': $level_label = '良好'; break; case 'C': $level_label = '及格'; break; case 'D': $level_label = '差'; break;}switch常用于有多個(gè)分支并且有確定值分類比較簡(jiǎn)單值的時(shí)候,上述代碼時(shí)我們要對(duì)評(píng)級(jí)分別給予描述。基本語(yǔ)法結(jié)構(gòu)如上,下面也再做個(gè)解釋

switch ( $level ) { // 分支關(guān)鍵字 switch 必須的,加圓括號(hào)和花括號(hào),圓括號(hào)里面是變量或者一個(gè)有明確計(jì)算結(jié)果的表達(dá)式 case 'A': // 每一個(gè)分支都用 case 值:來(lái)開(kāi)始 /*這里寫(xiě)代碼和業(yè)務(wù)邏輯*/ break; // 每一個(gè)分支處理完代碼業(yè)務(wù)邏輯,要跳出當(dāng)前分支 case 'B': $level_label = '良好'; break; case 'C': $level_label = '及格'; break; case 'D': $level_label = '差'; break;}switch和if...else...在很多情況下是可以互相替代的,并且可以隨便嵌套,就是你中有我我中有你的這種感覺(jué),因?yàn)閟witch和if...else..本身也是組成代碼業(yè)務(wù)邏輯的一部分,當(dāng)然可以放在彼此懷(dai)里(ma)了(li)

3.6 輸出和打印

第七點(diǎn),當(dāng)我們進(jìn)行了一系列的數(shù)據(jù)獲取、處理、轉(zhuǎn)換以后,我們需要把這個(gè)結(jié)果返回給用戶看到,這里就需要用到簡(jiǎn)單的輸出和打印

echo '學(xué)生 '.$study_name.' 的成績(jī)?yōu)?'. $study_score .',評(píng)級(jí)為:'.$level.'('. $level_label .')';die;這里的代碼中我們使用了 echo 這個(gè)關(guān)鍵字(php語(yǔ)法,php中預(yù)留了一些自用的單詞),echo后面可以輸出非數(shù)據(jù)結(jié)構(gòu)類型的其他類型變量或值,比如,字符、數(shù)字(整型和浮點(diǎn)型)、布爾值等。而要輸出打印數(shù)組(array)、對(duì)象(object)則需要用到以下兩個(gè)函數(shù)

print_r($array); // 通常用于數(shù)組打印var_dump($object); // 可以輸出打印所有類型,會(huì)有類型提示燈詳細(xì)信息print 'char'; // 與echo類似常用的基本上就是我們以上者四種了,可以用來(lái)輸出內(nèi)容數(shù)據(jù)給用戶看,也可以用來(lái)進(jìn)行簡(jiǎn)單的代碼調(diào)試(作用很大)。

3.7 循環(huán)結(jié)構(gòu)

第八點(diǎn),我們現(xiàn)在每次處理的是一條學(xué)生的成績(jī)數(shù)據(jù),如果需要處理多條的時(shí)候呢?我們就需要用到循環(huán)結(jié)構(gòu)語(yǔ)法了,也就是不斷重復(fù)的去執(zhí)行語(yǔ)句。首先,我們假設(shè),需要同時(shí)處理5個(gè)學(xué)生的成績(jī),我們用數(shù)組(用于存儲(chǔ)多個(gè)不同的值定義如下

// php中數(shù)組的定義如下// 使用array()來(lái)定義數(shù)組,數(shù)組的值也可以是數(shù)組// 有鍵名(如下面的name和score用來(lái)描述后面的值是什么樣的值)和值對(duì)的// 也有沒(méi)有鍵名只有值得,下面的值array('name' => '章五二', 'score' => 85)就是沒(méi)有鍵名的// 鍵名和值用符號(hào) => 連接,數(shù)組里的每一個(gè)項(xiàng)(值)后面用逗號(hào)(,)結(jié)束,最后一項(xiàng)可以不用// 數(shù)組只有一層(如 array(1,2,3))叫一維數(shù)組,有兩層(如下面的)叫二維數(shù)組,以此類推$score_arr = array( array('name' => '章五二', 'score' => 85), array('name' => '李小狗', 'score' => 65), array('name' => '孫兒了', 'score' => 99), array('name' => '韋小寶', 'score' => 59), array('name' => '任之初', 'score' => 88));// 或用短數(shù)組的方式來(lái)定義,就是中括號(hào) [] 代替 array(),在php5.4以上的版本支持了,如下$score_arr = [ ['name' => '章五二', 'score' => 85]];那怎么獲取數(shù)組值呢?

// 使用中括號(hào)和下標(biāo)來(lái)獲取,如[下標(biāo)],包括數(shù)字索引和鍵名索引兩種方式,鍵名存在的時(shí)候才可以使用鍵名// 例如,我要獲取章五二的成績(jī)就需要獲取數(shù)組$score_arr的第一個(gè)值// (數(shù)組的索引下標(biāo)從0開(kāi)始,第一個(gè)值下標(biāo)是0,第二個(gè)是1,以此類推)$score_arr[0]; // 這里獲取到的是第一個(gè)值,array('name' => '章五二', 'score' => 85)// 然后在獲取第一個(gè)值(也是數(shù)組)的score對(duì)應(yīng)的分?jǐn)?shù)值$score_arr[0]['score']; // 這里獲取的是第一個(gè)值的分?jǐn)?shù),你可以使用echo或者其他輸出方式,把她打印出來(lái)看看現(xiàn)在數(shù)組有了,我們要進(jìn)行批量處理的時(shí)候,就可以采用循環(huán)的方式,數(shù)組循環(huán)我們通常用

foreach(數(shù)組 as 鍵 => 值) {}

的方式

foreach ( $score_arr as $key => $value ) { // 獲取每個(gè)人的成績(jī)并輸出 // 此時(shí)的 $value 就是數(shù)組的每一個(gè)值,從0(第一個(gè))開(kāi)始 // 如array('name' => '章五二', 'score' => 85) echo '學(xué)生 '. $value['name'] .' 的成績(jī)?yōu)?'. $value['score'] . '<br>';}// 不斷重復(fù)循環(huán)的去獲取成績(jī),輸出結(jié)果如下:/* 學(xué)生 章五二 的成績(jī)?yōu)?85 學(xué)生 李小狗 的成績(jī)?yōu)?65 學(xué)生 孫兒了 的成績(jī)?yōu)?99 學(xué)生 韋小寶 的成績(jī)?yōu)?59 學(xué)生 任之初 的成績(jī)?yōu)?88*/還有兩個(gè)常用循環(huán)結(jié)構(gòu)

for(初始值; 條件判斷表達(dá)式; 改變條件) { // 代碼邏輯 }// 和初始值while(條件判斷表達(dá)式) { // 代碼邏輯 改變條件}注意有三要素:初始值、條件判斷、改變條件,同時(shí)注意for里面用的是分號(hào)而不是逗號(hào)。具體寫(xiě)法如下

// 以從1加到100為例,你想說(shuō)首尾相加乘以50就好了,還要什么代碼執(zhí)行,哦豁,那么我們就用乘的吧// 從1乘到100,hiahiahia// $i不斷的變化,帶來(lái)了循環(huán)和循環(huán)結(jié)束的可能性,每一輪循環(huán),$i的值都在變化$total = 1; // 定義變量存儲(chǔ)最終結(jié)果for ($i=1; $i <= 100; $i++) { $total = $total * $i; // 當(dāng)對(duì)變量自身進(jìn)行數(shù)學(xué)運(yùn)算時(shí)可以簡(jiǎn)寫(xiě),如 $total *= $i;}// 或用 while$total = 1;$i = 1;while ($i <= 100) { $total *= $i; $i++;}// 補(bǔ)充說(shuō)明: $i++是自增1,同理$i--是自減1,同時(shí)符號(hào)放在前面也是可以的,結(jié)果一樣,如++$i、--$i// 但他們有所區(qū)別,你可以簡(jiǎn)單理解為,符號(hào)在前面的,是先運(yùn)算再使用,在后面的是先使用再運(yùn)算,比如$i = 1;$val = $i++; // $val = 1, $i = 2$i = 1;$val = ++$i; // $val = 2, $i =2// 好好體會(huì)一下至此,你需要了解的PHP入門(mén)的基本語(yǔ)法就差不多了,你可以自己嘗試謝謝別的東西,比如模擬和用戶的對(duì)話,用戶選擇問(wèn)題提問(wèn),你針對(duì)問(wèn)題返回輸出不同的答案給用戶等等。Just try it~!恭喜你,真的入門(mén)了。如果你還不滿足,那么請(qǐng)接著往下看,以后我們都盡量用下面的知識(shí)來(lái)寫(xiě)php代碼哦。

三、PHP函數(shù)和類

1、函數(shù)

php函數(shù)分為內(nèi)置函數(shù)自定義函數(shù),函數(shù)是一種功能的封裝,大大提高了代碼的復(fù)用率,避免了代碼的冗余。

PHP 的真正威力源自于它的函數(shù)。在 PHP 中,提供了超過(guò) 1000 個(gè)內(nèi)建的函數(shù)。
是不是聽(tīng)起來(lái)就有點(diǎn)炸。那么什么時(shí)候使用函數(shù)呢?一般要進(jìn)行重復(fù)使用同樣或類似的代碼的時(shí)候就需要用到函數(shù),函數(shù)來(lái)封裝這部分代碼,放在一處,處處可用,業(yè)務(wù)代碼更簡(jiǎn)潔了,還能少些代碼,同時(shí)功能解構(gòu)了,互不影響,多好,何樂(lè)而不為。

內(nèi)置函數(shù),只要你想用就可以直接用,包括我們上面接觸到的輸出用的兩個(gè)函數(shù) print_r() 和 var_dump(),可以直接使用,函數(shù)的調(diào)用方式就是

函數(shù)名(參數(shù))函數(shù)名和變量名的命名規(guī)則一致,那參數(shù)是什么呢?

var_dump('我就是參數(shù),值');非常簡(jiǎn)單的去理解的話,參數(shù)就是函數(shù)調(diào)用的時(shí)候括號(hào)里面的東東,比如上面的 '我就是參數(shù),值',這整個(gè)就是參數(shù)。參數(shù)的作用就是將函數(shù)外部的變量、值等傳遞到函數(shù)內(nèi)部使用,參數(shù)也分實(shí)參形參,作為入門(mén)理解,我們簡(jiǎn)單的理解為,實(shí)參是外部傳遞到函數(shù)內(nèi)部的時(shí)候的參數(shù),形參則是函數(shù)定義的時(shí)候,定義的參數(shù)列表。

// 假裝我是源碼里面的函數(shù)聲明function var_dump($input) { // 這里是代碼邏輯實(shí)現(xiàn) }// 這里聲明了函數(shù)var_dump,括號(hào)里面的就是形參了,$input// 我們調(diào)用var_dump$input = 'i am the input string';var_dump($input);// 這里調(diào)用時(shí)候傳入的參數(shù)$input就可以理解為實(shí)參由于php內(nèi)置了很多函數(shù),可以非常方便的使用,我們這里不詳細(xì)列舉,大家可以自己去了解下,后面我們用到的都會(huì)做對(duì)應(yīng)講解。

當(dāng)內(nèi)置函數(shù)不能滿足我們業(yè)務(wù)邏輯需求的時(shí)候,我們就需要自定義函數(shù)了。定義函數(shù)使用 function 關(guān)鍵字,基本格式如下(上面其實(shí)我們已經(jīng)見(jiàn)過(guò)她了)

function 函數(shù)名(參數(shù)1, 參數(shù)2, ...參數(shù)n) { 業(yè)務(wù)邏輯代碼}函數(shù)定義五要素:關(guān)鍵字function、函數(shù)名、圓括號(hào)和參數(shù)、花括號(hào)、花括號(hào)內(nèi)的業(yè)務(wù)邏輯代碼。

那么什么情況下要去封裝定義一個(gè)函數(shù)呢?我們拿我們?cè)谥v循環(huán)結(jié)構(gòu)的時(shí)候,進(jìn)行的累乘計(jì)算的例子來(lái)講,我們現(xiàn)在是從1開(kāi)始累乘每次自增1的值,如果有一天需求增加了從2開(kāi)始累乘每次自增2的值的時(shí)候,我們就得寫(xiě)成下面這個(gè)樣子

// 第一個(gè)需求$total_1 = 1;$i_1 = 1;while ($i_1 <= 100) { $total_1 *= $i_1; $i_1++;}// 第二個(gè)需求$total_2 = 2;$i_2 = 2;while ($i_2 <= 100) { $total_2 *= $i_2; $i_2 += 2;}然后,需求又變了,增加一個(gè)從10開(kāi)始累乘每次自增10的值,不僅如此,還要把原來(lái)的從1開(kāi)始的改成從5開(kāi)始,(不要以為這樣的需求不會(huì)出現(xiàn),你以后干這一行你就會(huì)發(fā)現(xiàn),無(wú)處不在,產(chǎn)品的思維不是你我能夠理解的)如果按上面的寫(xiě)法,要繼續(xù)加代碼,并且很明顯的發(fā)現(xiàn),幾個(gè)需求的代碼幾乎是一樣的,只有兩個(gè)東西不一樣,這就很尷尬了,不斷寫(xiě)差不多的東西,修改的時(shí)候還得修改很多地方,比如從1開(kāi)始改成從5開(kāi)始累乘3,你需要修改的地方有哪些,你自己數(shù)數(shù)。

那么事情發(fā)展到了這個(gè)地步,難道沒(méi)有辦法解決嗎?怎么,你忘了?我們說(shuō)的函數(shù)啊。

// 按函數(shù)聲明的格式,我們寫(xiě)來(lái)個(gè)框架function multiply() {}然后我們觀察需求發(fā)現(xiàn),經(jīng)常變動(dòng)的有兩個(gè)東西,一個(gè)是起始值,一個(gè)是自增值,那么這種變動(dòng)的東西,我們可以讓她以后作為參數(shù)傳到函數(shù)里面去。

// 添加形參// $multiplicand 被乘數(shù)(起始值)// $increment 自增值function multiply($multiplicand, $increment) {}然后就是把代碼邏輯放到函數(shù)體(花括號(hào)內(nèi)部分)內(nèi),使用參數(shù)來(lái)處理計(jì)算結(jié)果

function multiply($multiplicand, $increment) { $total = $multiplicand; $i = $increment; while ($i <= 100) { $total *= $i; $i += $increment; }}然后我們把結(jié)果從函數(shù)里面返回到函數(shù)外面,用 return 即可。

function multiply($multiplicand, $increment) { $total = $multiplicand; $i = $increment; while ($i <= 100) { $total *= $i; $i += $increment; } return $total;}這樣我們上面的代碼就可以變成

/*function.php 專門(mén)放function函數(shù)的地方,也可以和業(yè)務(wù)代碼放在一起*/function multiply($multiplicand, $increment) { $total = $multiplicand; $i = $increment; while ($i <= 100) { $total *= $i; $i += $increment; } return $total;}/*code.php*/// 使用 require 來(lái)包含其他 php 代碼require 'function.php';echo multiply(1,1);echo multiply(2,2);是不是看出來(lái),在具體業(yè)務(wù)代碼的code.php中,代碼更簡(jiǎn)潔了,而且封裝的函數(shù)multiply可以復(fù)用了。多好,多美好~!這里因?yàn)槔右?guī)模較小,優(yōu)勢(shì)可能你覺(jué)得沒(méi)那么明顯,慢慢等你長(zhǎng)(shen)大(ru)了會(huì)知道的,不著急,一個(gè)階段做一個(gè)事情嘛。

函數(shù)解決了代碼復(fù)用的基本問(wèn)題。

2、類和對(duì)象

當(dāng)需要封裝的函數(shù)越來(lái)越多,越來(lái)越雜的時(shí)候,管理起來(lái)就開(kāi)始變得困難,可讀性也更難了。你可能想到用不同文件來(lái)存放不同的函數(shù),然后用到的時(shí)候去分別包含(require或include)進(jìn)來(lái),good~!非常優(yōu)秀,說(shuō)明你在代碼復(fù)用問(wèn)題的解決上已經(jīng)邁出了思考的一步~!厲害了我的哥哥姐姐們~!

不過(guò)!如果函數(shù)非常多的時(shí)候,有沒(méi)有想過(guò)你自己都可能忘了文件里哪個(gè)函數(shù)是聲明定義過(guò)的,我現(xiàn)在寫(xiě)一個(gè)新的函數(shù)是不是名字被使用過(guò)?為什么這么考慮,因?yàn)?b>兩個(gè)函數(shù)名一樣的函數(shù)被包含或?qū)懙酵粋€(gè)文件里的時(shí)候,php運(yùn)行或發(fā)生致命錯(cuò)誤,也就是不能重復(fù)聲明或定義名字一樣的函數(shù)。

How to 解決這個(gè)問(wèn)題呢?所以有了類和方法的概念。請(qǐng)仔細(xì)研讀一下下面的文字,從基本面上了解類、對(duì)象、方法、屬性

在學(xué)校里,學(xué)生、老師是兩群不同的群體,簡(jiǎn)單說(shuō)就是兩類人,這個(gè)時(shí)候,學(xué)生是一類,老師是一類,這就是
在學(xué)生或老師的某一類里,每一個(gè)學(xué)生或老師,都是各自群體里的某一個(gè)個(gè)例,或者叫實(shí)際的例子,簡(jiǎn)稱實(shí)例(話糙理不糙),比如張五、孫三,都是不一樣的個(gè)體實(shí)例,我們就這叫實(shí)例化的對(duì)象,也就是類(學(xué)生群體)的對(duì)象(個(gè)體實(shí)例)
想想看,張五、孫三這兩都有些什么共同的靜態(tài)的東西,就是你有我也有的那種?想到了嗎?沒(méi)想到?不會(huì)吧~!身高?體重?是不是?腰圍、胸圍、臀圍是不是?當(dāng)然都是啊~!我們把這些稱為對(duì)象的屬性
張五、孫三除了有共同的靜態(tài)的特征,還有一些共同的動(dòng)態(tài)的東西,比如吃,比如喝,還有拉撒等,這些我們都可以稱為對(duì)象的方法
此時(shí)此刻的你,我覺(jué)得應(yīng)該對(duì)類和對(duì)象以及對(duì)象的屬性、方法有了一定的了解了。還記得上面你想到的把不同方法歸類到不同文件嗎?這個(gè)時(shí)候,我們可以把一個(gè)類寫(xiě)到一個(gè)文件,然后類里面有不同的方法,這樣只要類名不同,我們的方法同名也不要緊,因?yàn)槲覀兪褂妙惖膶?duì)象去調(diào)用的方法,每一個(gè)對(duì)象實(shí)例那都是不是同一個(gè)的。

那么php里面一個(gè)類要怎么寫(xiě)呢?我們這里遵循一個(gè)規(guī)范(很多規(guī)范有學(xué)術(shù)名稱,我們這里先不提,你知道就行了),一個(gè)文件一個(gè)類,類名和文件名要一致,比如我要新建一個(gè)學(xué)生類

<?php/** * Student.php * 這是一個(gè)學(xué)生類,類名 Student和文件名Student一致 * 方便讀懂和找類的時(shí)候更容易找到和區(qū)分 *//** * 類聲明的基本形式如下 * class 類名 {} */class Student {}學(xué)生這一類人有哪些屬性(特征)和方法(動(dòng)作、能力)呢?

<?php/** * Student.php * 這是一個(gè)學(xué)生類,類名 Student和文件名Student一致 * 方便讀懂和找類的時(shí)候更容易找到和區(qū)分 *//** * 類聲明的基本形式如下 * class 類名 {} */class Student { // 身高 public $height; // 體重 public $weight; /** * 吃 */ public function eat() { echo 'I am eatting~!'; } /** * 喝 */ public function drink() { echo 'Drinking too much~!'; }}就這樣,我們寫(xiě)了一個(gè)擁有兩個(gè)方法(類里面的函數(shù)我們通常稱為方法)和兩個(gè)屬性的學(xué)生類。有沒(méi)有發(fā)現(xiàn),類方法的聲明和函數(shù)的幾乎是一致的,而類屬性和變量的聲明也幾乎是一樣的。區(qū)別在哪里呢?你們都是明眼人,一看就知道多了個(gè) public,這個(gè)關(guān)鍵字,和protected、private,并稱類屬性或方法的訪問(wèn)類型,也就簡(jiǎn)單的描述了屬性和方法的訪問(wèn)限制

public:定義的屬性和方法,在類的內(nèi)部和外部都可以直接訪問(wèn)使用,她們是公開(kāi)的。

protected:定義的屬性和方法,在類的內(nèi)部和繼承她的子類的內(nèi)部可以直接訪問(wèn)和使用,她們是對(duì)子類公開(kāi)的,在類之間進(jìn)行了保護(hù)。

private:定義的屬性和方法是私有的,只有類內(nèi)部自己能訪問(wèn)和使用。

那么如何訪問(wèn)類的屬性和方法呢?我們新建一個(gè)class.php文件來(lái)演示類的實(shí)例化和屬性、方法的訪問(wèn)

<?php/** * class.php */// 包含類文件,也就包含了類require 'Student.php';// 實(shí)例化類,使用 new 類名() 的方式// 這樣就得到了一個(gè)學(xué)生類Student的對(duì)象 $student$student = new Student();// 使用對(duì)象->的方式訪問(wèn)類的屬性和方法var_dump($student->height);$student->eat();既然講到繼承了,我們就繼續(xù)講一講,繼承作為類的一大特性之一,能夠解決更多的代碼耦合的問(wèn)題,比如同樣是學(xué)生,男同學(xué)和女同學(xué)在吃上面也是不一樣的,男同學(xué)吃飯量大且大口朵頤,女同學(xué)量小還溫柔細(xì)嚼慢咽。這個(gè)時(shí)候,如果我們?cè)趯W(xué)生類的方法吃里面進(jìn)行男女生判斷再執(zhí)行不同的操作,如下

<?php/** * Student.php * 這是一個(gè)學(xué)生類,類名 Student和文件名Student一致 * 方便讀懂和找類的時(shí)候更容易找到和區(qū)分 *//** * 類聲明的基本形式如下 * class 類名 {} */class Student { // 身高 public $height; // 體重 public $weight; // 性別 public $sex; /** * 每個(gè)類都可以聲明定義一個(gè)構(gòu)造函數(shù) * 構(gòu)造函數(shù)在實(shí)例化的時(shí)候就會(huì)調(diào)用 * 也就是比其他方法會(huì)先調(diào)用 * 可以接受參數(shù) */ public function __construct($sex) { // 在類內(nèi)部使用 $this 來(lái)訪問(wèn)屬性和方法 // 訪問(wèn)類屬性和方法時(shí)的使用方法時(shí):$類對(duì)象名->屬性或方法,例如下面 $this->sex = $sex; // 把傳進(jìn)來(lái)的性別參數(shù)賦值給類的sex屬性 } /** * 吃 */ public function eat() { // 根據(jù)性別不同來(lái)判斷吃相 if ( $this->sex == '男' ) { echo '吃得很香,大口朵頤,毫無(wú)人性'; } elseif ( $this->sex == '女' ) { echo '哇,溫柔的細(xì)嚼慢咽,好美的畫(huà)面'; } else { echo '夾起,塞嘴里,嚼碎,吞咽'; } } /** * 喝 */ public function drink() { echo 'Drinking too much~!'; }}突然,需求變了,不是男女來(lái)區(qū)分吃的方法方式了,而是年級(jí)來(lái)分,一年級(jí)的這么吃,二年級(jí)的那么吃...去改代碼去吧,不僅要去掉先前的代碼,還要新增別的代碼,并且,萬(wàn)一原來(lái)別的地方使用了男、女吃的方法,那可怎么辦,隱患真大,所以我們偉大的先人們發(fā)明了類繼承

我們新建一個(gè)男、女學(xué)生類,繼承學(xué)生類(學(xué)生類先還原到最初的樣子)

<?php/** * Student.php * 這是一個(gè)學(xué)生類,類名 Student和文件名Student一致 * 方便讀懂和找類的時(shí)候更容易找到和區(qū)分 *//** * 類聲明的基本形式如下 * class 類名 {} */class Student { // 身高 public $height; // 體重 public $weight; /** * 吃 */ public function eat() { echo 'I am eatting~!'; } /** * 喝 */ public function drink() { echo 'Drinking too much~!'; }}然后新建男學(xué)生類和女學(xué)生類(php里面類的繼承是只能繼承一個(gè)父類的)

<?phprequire 'Student.php';/** * StudentBoy.php * 男學(xué)生類 * 繼承學(xué)生類,也就繼承了學(xué)生類的所有非私有(private)的屬性和方法 */class StudentBoy extends Student {}


<?phprequire 'Student.php';/** * StudentGirl.php * 女學(xué)生類 * 繼承學(xué)生類,也就繼承了學(xué)生類的所有非私有(private)的屬性和方法 */class StudentGirl extends Student {}使用關(guān)鍵字 extends 來(lái)繼承類,這樣,啥也不用寫(xiě)啥也不用干,就擁有了學(xué)生類的所有非私有(private)屬性和方法。

<?php/** * class.php */// 包含類文件,也就包含了類require 'StudentBoy.php';// 實(shí)例化男學(xué)生類對(duì)象,雖然男學(xué)生類沒(méi)有eat方法,但是繼承了學(xué)生類,也繼承了學(xué)生類的eat方法$boy = new StudentBoy();$boy->eat();那么繼承有了,我們?cè)趺床拍軌驅(qū)崿F(xiàn)不同的性別或年級(jí)來(lái)執(zhí)行不同的吃法呢?沒(méi)錯(cuò)~?。ㄟ_(dá)叔好久不加你...)就是一個(gè)叫子類重寫(xiě)父類成員方法的方式,也叫覆蓋、覆寫(xiě)。很簡(jiǎn)單,就是在子類里面重新定義或聲明一遍父類的某個(gè)方法,這樣一來(lái),你實(shí)例化子類對(duì)象的時(shí)候,調(diào)用該方法,就會(huì)調(diào)用子類里面的,那些沒(méi)有重寫(xiě)父類方法和父類本身的類,依舊可以輕松調(diào)用父類的該方法,互不影響,實(shí)現(xiàn)解構(gòu),解耦

<?phprequire 'Student.php';/** * StudentBoy.php * 男學(xué)生類 * 繼承學(xué)生類,也就繼承了學(xué)生類的所有非私有(private)的屬性和方法 */class StudentBoy extends Student { // 重寫(xiě)父類eat方法 public function eat() { echo '吃得很香,大口朵頤,毫無(wú)人性'; }}


<?phprequire 'Student.php';/** * StudentGirl.php * 女學(xué)生類 * 繼承學(xué)生類,也就繼承了學(xué)生類的所有非私有(private)的屬性和方法 */class StudentGirl extends Student { // 重寫(xiě)父類eat方法 public function eat() { echo '哇,溫柔的細(xì)嚼慢咽,好美的畫(huà)面'; }}就非常方便的能擴(kuò)展了,并且任何一個(gè)類修改將不影響父類,父類修改也不影響子類,新增多少個(gè)年級(jí)的吃法都是新增某個(gè)年級(jí)的類,然后重寫(xiě)父類的方法即可。

至此,我們講解了類、對(duì)象、實(shí)例化、對(duì)象屬性、對(duì)象方法、類繼承、重寫(xiě)父類方法等內(nèi)容。但其實(shí)類和對(duì)象里面還有很多東西,后面我們會(huì)慢慢接觸和講到。到這里對(duì)于入門(mén)來(lái)說(shuō)已經(jīng)夠我們喝一壺的了。

最后,給大家留一個(gè)問(wèn)題,用類和方法以及函數(shù)的封裝來(lái)改寫(xiě)我們文初 scorelevel.php 文件關(guān)于處理前端提交過(guò)來(lái)的學(xué)生和分?jǐn)?shù)評(píng)級(jí)的相關(guān)代碼,練習(xí)一下也是可以的。或者在我們類和對(duì)象的內(nèi)容里,你去實(shí)現(xiàn)一年級(jí)、二年級(jí)的類和吃的方法,甚至是喝的方法等。

本文章旨在讓你了解PHP的基礎(chǔ)語(yǔ)法、PHP如何和前端表單交互、PHP的類和對(duì)象、函數(shù)等知識(shí),希望你能掌握簡(jiǎn)單的PHP前后端交互、理解類和函數(shù)封裝。

有問(wèn)題可以留言,我會(huì)及時(shí)回復(fù)。



關(guān)鍵詞:入門(mén)

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉